4

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

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

在某些情况下,如果有任何内容无效,我会阻止表单提交。本质上,我正在寻找一种方法来选择有效属性为假的所有元素?我是否必须遍历所有相关元素并检查错误读数,还是有一个我忽略的 jQuery 选择器?就像是:

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

会好的。有什么建议么?

4

3 回答 3

5

试试这个...

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

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

于 2011-05-10T10:18:53.310 回答
5

可重用的:invalidjQuery 选择器过滤器

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

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

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

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

就是这样。

让我们将所有内容放在一个简单的插件中,您可以轻松地将其包含在脚本代码中或放入脚本文件中(如果您使用相同的验证功能,则可以在多个页面和多个应用程序上实现可重用性):

(function($) {

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

})(jQuery);
于 2011-05-10T10:22:54.397 回答
0

用这个:

$(':input').each( function() {
   return $(this).prop('valid');
});
于 2011-05-10T10:20:12.717 回答