1

我正在尝试使用此命名约定向 html 输入元素添加相同的规则:

name="elements[1]"
name="elements[2]"

我正在使用 jQuery 和 jQuery 验证插件:

var elements = $("#elementsFieldset :input");
$.each(elements, function(i, element) {
    element.rules('add', {
    required: true,
    number: true
});

但恐怕元素不是 jQuery 期望添加规则的那种对象。我收到:

Uncaught TypeError: Object #<HTMLInputElement> has no method 'rules'

非常感谢您的帮助。

4

2 回答 2

3

使用 $(this)而不是 element.

element是 HTML JavaScript 对象。

添加规则你需要 jQuery 对象,即$(this)

var elements = $("#elementsFieldset :input");
$.each(elements, function(i, element) {
    $(this).rules('add', {
    required: true,
    number: true
});

甚至更好

var elements = $("#elementsFieldset :input");
    elements.each(function(){
        $(this).rules('add', {
        required: true,
        number: true
    });

更新

.each()下面的代码仅适用于一个元素,如果您想将规则应用于上述示例中使用的多个元素使用。

$("#elementsFieldset :input").rules("add", { 
  required:true,  
  number:true
});

阅读jQuery Validation Plugin - 添加适用于Sparky评论的多个字段的规则

jQuery 验证插件

于 2013-10-07T16:03:27.717 回答
2

试试这个,

$.each(elements, function(i, element) {
    $(this).rules('add', {// use $(this) instead of element
    required: true,
    number: true
});

或者简单地尝试一下,

$("#elementsFieldset :input").rules("add", { 
  required:true,  
  number:true
});

您可以add rule使用类而不是名称值来class查看jQuery 验证

于 2013-10-07T16:03:19.313 回答