2013-10-15 4 views
0

Я пытаюсь выполнить проверку («keyup») вместо on ('blur'). Цель состоит в том, чтобы предотвратить продвижение вперед, если все поля не проверяются. Как это работает, все родительские div имеют класс .item и с «текущим рабочим jquery» также имеют класс .bad, если он не найден, он включает следующую кнопку. Смотрите ниже код:Отключить кнопку, если класс существует else удалить отключен

Текущий рабочий JQuery:

$('input[required]').change(function(){ 
     var v = this.value; 
     $(this).closest('div.item')[$.trim(v).length !== 0 ? 'addClass' : 'removeClass']('bad'); 
     $('input[type="button"].next').prop('disabled', function(){ 
      return $(this).closest('fieldset').find('div.bad').length > 0; 
     }); 
    }).change(); 

Теперь я пытаюсь установить определенную функцию к каждому FIELDSET вернуть определенное число классов истинных, а затем активировать. Так что, если "4" классы "div.good" присутствуют, removeAttr ('отключено') от ".next"

<!-- when page loads --> 
    <div class="item"><input required></div> 

    <!-- if it doesn't validate --> 
    <div class="item bad"> 
     <input required> 
     <div class="alert">why it isn't validating</div> 
    </div> 

    <!-- and if it does validate it changes to --> 
    <div class="item good"><input required></div> 

логики и концепции - плохое исполнение - JQuery

($("fieldset.first").children().find('.good')[4]){ //should I use .length !== 4? 
    $('.next').removeAttr('disabled'); 
}else{ 
    $('.next').attr('disabled', true); 
} 
+2

Это добавление автоматически, потому что вы сразу же вызываете событие 'change' с' .change() 'в конце. – tymeJV

ответ

1

Try

$('.next').prop('disabled', $('div.item').has('.alert').length > 0); 
+0

обновленный вопрос – darcher

+0

btw это сработало, но это заставило меня понять, что я ошибся в том, что мне нужно. поскольку .alert не запускался, пока поле не фокусировалось, поэтому кнопка включается после каждого ввода поля. – darcher

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