0

我正在尝试在('keyup')而不是('blur')上运行验证。目标是在所有字段都未验证的情况下阻止前进。它的工作方式,所有父 div 都有一个类 .item 并且“当前工作的 jquery”也有一个类 .bad,如果没有找到 bad 则启用下一个按钮。请参见下面的代码:

当前工作的 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();

现在我试图为每个字段集设置一个特定的函数以返回特定数量的类 true,然后激活。因此,如果存在“4”类“div.good”,则从“.next”中删除Attr('disabled')

    <!-- 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);
} 
4

1 回答 1

1

尝试

$('.next').prop('disabled', $('div.item').has('.alert').length > 0);
于 2013-10-15T13:19:25.650 回答