我正在尝试使用此命名约定将相同的规则添加到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'
非常感谢您的帮助。
答案 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
答案 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
class
见jQuery Validation using the class instead of the name value