Добавить одно и то же правило в несколько полей
Я пытаюсь добавить те же правила для элементов ввода 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'
Большое спасибо за любую помощь.
2 ответа
Использование $(this)
вместо element
,
element
HTML-объект JavaScript
чтобы добавить правила вам нужен jQuery Object т.е. $(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
Попробуй это,
$.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 с использованием класса вместо значения имени