2015-08-17 2 views
0

Я пытаюсь получить свои поля ввода (связанные классом), чтобы изменить цвет, когда у них есть контент.Изменения цвета ввода jQuery Не работает правильно

Это работает, но удаление класса не активируется должным образом, и я не уверен, почему. Если я ввожу содержимое в первый, затем второй ввод, удаляю содержимое с первого, класс удаляется, однако, если я удалю контент со второго до первого, фон останется синим.

Я не могу использовать текстовые поля Id, поскольку они уже используются.

JS код:

$('.checkFiller').on('change', function() { 
    if ($('.checkFiller').length > 0) { 
     $(this).addClass('allFiller'); 
    } 
    if ($('.checkFiller').val() == '' || $('.checkFiller').val() == 0 || $('.checkFiller').val() == null) { 
     $(this).removeClass('allFiller'); 
    } 
}); 

Вот является jsfiddle демо мое разочарование - что я делаю не так?

https://jsfiddle.net/qwgj77tm/1/

+0

если (. Длина $ ('checkFiller')> 0) = это будет всегда быть правдой ... Ты хочешь этого? – sinisake

ответ

3

Вы должны использовать this, чтобы получить тот, который вы редактировали использование .hasClass() и .length достигнуть этого

$('.checkFiller').on('change', function() { 
 
    if($(this).val().length==0){ 
 
     \t $(this).removeClass('allFiller'); 
 
    }else $(this).addClass('allFiller'); 
 
});
.allFiller { 
 
    background-color: #333366; 
 
    color: #ffffff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="checkFiller"> 
 
<input class="checkFiller"> 
 
<input class="checkFiller">

+0

Хороший - спасибо за это. – PurpleSmurph

+0

@PurpleSmurph Примите, пожалуйста, как ответ, если вы считаете, что решение сработало для вас. Спасибо :) – joyBlanks

+0

Сделали - я попытался изначально, но с ограничением по времени. – PurpleSmurph

0

Вы должны изменить свои ссылки с $('.checkFiller') на $(this) в на:

$('.checkFiller').on('change', function() { 
    if ($(this).length > 0) { 
     $(this).addClass('allFiller'); 
    } 
    if ($(this).val() == '' || $(this).val() == 0 || $(this).val() == null) { 
     $(this).removeClass('allFiller'); 
    } 
}); 

Как есть, вы проверяете первый вход с классом, а тот, который изменился.

Смежные вопросы