用类检查所有字段

时间:2014-04-29 17:13:48

标签: javascript jquery

我使用的脚本检查某个字段是否有效,如果没有,则会禁用表单提交按钮并添加红色边框;

      $('.date').on('change', function(){
                    var txtVal =  $(this).val();
                    if(isDate(txtVal)) {
                        $(this).css('border', '1px solid #000');            
                        $(".submit").attr('disabled' , false);  
                    } else {                                        
                        $(this).css('border', '1px solid red');       
                        $(".submit").attr('disabled' , true);   
                    }            
           });

问题是我有多个这些字段。如果用户使两个字段无效(变为空白),然后更正一个字段,则启用提交按钮。因为脚本会检查这个'条件,不是全部。我想只在启用了提交按钮,如果所有.date类都有效。

关于如何实现这一目标的任何想法?

jsFiddle

2 个答案:

答案 0 :(得分:2)

试试这个:

$('.date').on('change', function() {
    var valid = true;
    $.each($('.date'), function(i, v) {
        var $v = $(v);
        if (!isDate($v.val())) {
            valid = false;
            $v.css('border', '1px solid red');
        } else {
            $v.css('border', '1px solid #000');
        }
    });
    if (valid) {
        $(".submit").attr('disabled', false);
    } else {
        $(".submit").attr('disabled', true);
    }
});

<强> Demo Link

答案 1 :(得分:1)

http://jsfiddle.net/sM24d/3/

$('.date').on('change', function(){
    var numInvalid = 0;
    $('.date').each(function(index){
      var txtVal =  $(this).val();
      if(!isDate(txtVal)) {                      
         numInvalid++;
         $(this).css('border', '1px solid red');             
      } else {
         $(this).css('border', '1px solid #000');
      }                 
    });
    if(numInvalid == 0) {                   
       $(".submit").attr('disabled' , false);   
    } else {                                                          
       $(".submit").attr('disabled' , true);    
    }                                   
});

这里我们在更改一个日期字段时查看每个日期字段,并计算返回无效值的数字。最后,我们看看计数是否&gt;如果是,则禁用提交按钮0。