有没有办法选择具有特定属性值的所有元素?

时间:2011-05-10 10:15:52

标签: javascript jquery jquery-1.6

我正在使用jQuery构建一个相当简单的插件来验证表单。当一个元素被评估为有效时,我运行

$(this).prop("valid", false);

在某些情况下,如果有任何内容无效,我将要阻止表单提交。基本上我正在寻找一种方法来选择有效属性为false的所有元素?我是否必须遍历所有相关元素并检查错误读取或是否有我忽略的jQuery选择器?类似的东西:

$("input[valid=false]");

会很好。有什么建议吗?

3 个答案:

答案 0 :(得分:5)

试试这个......

$('input').filter(function() {
   return this.valid === false; 
});

它会返回所有input元素(您的意思是:input?),其valid属性 false(注意严格的相等比较)。

答案 1 :(得分:5)

可重用的:invalid jQuery选择器过滤器

您可以编写一个简单的选择器过滤器:

$.extend($.exp[":"], {
    invalid: function(element) {
        return element.valid === false;
    }
});

然后只需将它与您使用的任何选择器组合即可获得元素,即:

// all invalid inputs
$(":input:invalid");
// or all invalid text boxes
$("input[type=text]:invalid");

就是这样。

让我们把它全部放在一个简单的插件中,您可以轻松地将其包含在脚本代码中或放入脚本文件中(如果您使用相同的验证功能,则可以在多个页面以及多个应用程序中重复使用): / p>

(function($) {

    $.extend($.exp[":"], {
        invalid: function(element) {
            return element.valid === false;
        }
    });

})(jQuery);

答案 2 :(得分:0)

使用它:

$(':input').each( function() {
   return $(this).prop('valid');
});