Question

I asked an earlier version of this question and learned to use .css to change the class. However, I decided I'd rather use addClass and removeClass (it would make it easier for later functions I'm going to bring in).

Here is the code, and jsfiddle:

$(function(){
   if($.trim($('.text-edit1').val()).length){
      $(this).addClass('active-text');
   });
});

All I want to do is add a background color when the user types into the textarea, and remove the color when the text is deleted. I tried to write the beginning of the function but can't get it to work...

It would be great if anyone knew how to do this. Thanks in advance!

Was it helpful?

Solution

If you want to write $(this) you have to attach an event to the element. Looks like you need a keyup event.

$('.text-edit1').keyup(function () {
    if ($.trim($('.text-edit1').val()).length) {
        $(this).addClass('active-text');
    } else {
        $(this).removeClass('active-text');
    }
});

http://jsfiddle.net/gEVL9/4/

OTHER TIPS

You can also try to attach an keyup event handler with jquery .on()

$(function(){
    $(document).on('keyup','.text-edit1',function(){
       if ($.trim($('.text-edit1').val()).length) {
        $(this).addClass('active-text');
       }
       else {
        $(this).removeClass('active-text');
      }
    });
});

Try in fiddle

Just a bit shorter variant, less readable.

$('.textarea-class').on('keyup', function (ev) {
    $(this).toggleClass('active', !!$(this).val().trim());
});

!! - will convert value to it's boolean representation

.toogleClass(class, state) - state "true" - class will be added, state "false" - removed

trimmed empty string '' will be handled as falsy, so class will be removed

JSFiddle Demo

Use keyup event

$('.text-edit1').keyup(function () {
    if ($.trim($(this).val()).length) {
        $(this).addClass('active-text');
    }else {
        $(this).removeClass('active-text');
    }
});

DEMO

You can bind keyup event with textarea.

$('.text-edit1').bind('keyup',function () {
    if ($.trim($(this).val()).length) {
        $(this).addClass('active-text');
    }else {
        $(this).removeClass('active-text');
    }
});
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top