jQuery - 查找具有没有值的给定类的任何输入

时间:2010-08-13 13:36:50

标签: javascript jquery

我有一个(非常)基本的验证脚本。我基本上想检查类.required的任何输入,看看是否有值a)空白或b)0如果是,则在我的表单提交上返回false。这段代码似乎没有返回false:

function myValidation(){
  if($(".required").val() == "" || $(".required").val() == 0){
  $(this).css({ backgroundColor:'orange' })  ;
  return false;
  }
}

将此函数附加到我的表单的onSubmit处理程序不会返回任何结果。任何关于此事的光明都将受到赞赏。

我基本上在使用类.required迭代所有输入的函数之后,如果ANY有空值或0值,则在我的提交时返回false并将所有表现不佳的输入的背景颜色更改为橙​​色。

3 个答案:

答案 0 :(得分:11)

您的代码目前从.val()获取第一个 .required的{​​{3}}:

  

获取匹配元素集中第一个元素的当前值。

您需要逐个过滤每个,例如:

function myValidation(){
  var allGood = true;
  $(".required").each(function() {
     var val = $(this).val();
     if(val == "" || val == 0) {
       $(this).css({ backgroundColor:'orange' });
       allGood = false;
     }
  });
  return allGood;
}

或者更紧凑的版本:

function myValidation(){
  return $(".required").filter(function() {
     var val = $(this).val();
     return val == "" || val == 0;
  }).css({ backgroundColor:'orange' }).length === 0;
}

答案 1 :(得分:3)

试试这个jQuery选择器:

$('。required [value =“”] ,. required [value = 0]')

答案 2 :(得分:1)

您也可以通过定义自己的自定义jQuery选择器来实现:

$(document).ready(function(){

    $.extend($.expr[':'],{
        textboxEmpty: function(el){
            return ($(el).val() === "");
        }
    });
});

然后像这样访问它们:

alert($('input.required:textboxEmpty').length); //alerts the number of input boxes in your selection

所以你可以在它们上加.each

$('input.required:textboxEmpty').each(function(){
    //do stuff
});