代码之家  ›  专栏  ›  技术社区  ›  SimonDowdles

jQuery—查找给定类中没有值的任何输入

  •  5
  • SimonDowdles  · 技术社区  · 14 年前

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

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

    将此函数附加到窗体的onSubmit处理程序不会返回任何结果。对这件事的任何解释都将不胜感激。

    我基本上是在寻找一个函数,它用class.required遍历所有的输入,如果有任何输入值为空或0,则在提交时返回false,并将所有行为不好的输入的背景色更改为橙色。

    3 回复  |  直到 14 年前
        1
  •  11
  •   djdd87    14 年前

    您的代码当前获得 .val() 对于 第一 .required the .val() documentation

    您需要逐个筛选,如下所示:

    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;
    }
    
        2
  •  3
  •   TimS    14 年前

    请尝试以下jQuery选择器:

        3
  •  1
  •   Mutation Person    14 年前

    也可以通过定义自己的自定义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
    });