Добавить одно и то же правило в несколько полей

Я пытаюсь добавить те же правила для элементов ввода 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

плагин проверки jQuery

Попробуй это,

$.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 с использованием класса вместо значения имени

Другие вопросы по тегам