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

发布于 2024-11-06 07:37:11 字数 297 浏览 1 评论 0原文

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

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

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

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

那就太好了。有什么建议吗?

I'm building a fairly simple plugin with jQuery that validates a form. When an element is assessed to be valid I run

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

In certain instances I'm going to want to block the form from submitting if anything is invalid. Essentially I'm looking for a way to select all the elements where the valid property is false? Am I going to have to iterate over all relevant elements and check for a false reading or is there a jQuery selector that I've overlooked? Something like:

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

Would be nice. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尾戒 2024-11-13 07:37:11

试试这个...

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

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

Try this...

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

It will return all input elements (do you mean :input?) where its valid property is false (notice strict equality comparison).

嘿咻 2024-11-13 07:37:11

可重用 :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");

就是这样。

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

(function($) {

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

})(jQuery);

Reusable :invalid jQuery selector filter

You could write a simple selector filter:

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

Then simply combine it with whatever selector your using to get your elements ie:

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

That's it.

Let's put it all in a simple plugin that you can easily include in your script code or put in a script file (for reusability purposes on several pages as well as several applications if you'd use the same validation functionality):

(function($) {

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

})(jQuery);
晨光如昨 2024-11-13 07:37:11

使用这个:

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

use this:

$(':input').each( function() {
   return $(this).prop('valid');
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文