添加相同规则多个字段

时间:2013-10-07 15:59:11

标签: javascript jquery validation jquery-validate

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

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

我正在使用jQuery和jQuery Validation Plugin:

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'

非常感谢您的帮助。

2 个答案:

答案 0 :(得分: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 - adding rules that apply to multiple fields评论的Sparky

jQuery Validation Plugin

答案 1 :(得分: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 classjQuery Validation using the class instead of the name value

。{{1}}