Проверить динамическое поле JQuery

Добрый день, я наткнулся на следующий вопрос.

Я использую плагин проверки jQuery для проверки моей формы v1.13.0 на стороне клиента.

Работает просто отлично.

Но проблема, которую я не могу решить:

У меня есть имя поля "product []", которое является массивом. У меня может быть один или у меня может быть 20 продуктов в этом массиве.

Вот мой код:

data_emissao:   {required: true},
forma_pagamento:    {required: true},
produto[]:  {required: true}, // tried this with no sucess

Кто-нибудь когда-нибудь сталкивался с этой проблемой?

2 ответа

Два вопроса...

1) Если имя вашего поля содержит скобки, точки или другие специальные символы, то вы должны заключить это имя в кавычки.

"produto[]":  {
    required: true
}

2) Однако, если input содержит это точное имя, name="produto[]", тогда это не будет работать, так как вы не можете объявить массив внутри rules вариант .validate(), rules опция принимает только список имен отдельных полей.


Два возможных решения...

1) Вы можете использовать .rules() Метод следующим образом. Использование jQuery "начинается с" селектора для выбора всего массива и jQuery .each() применить .rules('add') метод для каждого поля в этой группе.

$('[name^="produto"]').each(function() {  // select elements using "starts with" selector
    $(this).rules('add', {
        required: true,
        // other rules
    });
});

2) Однако, если единственное правило required, тогда вам не нужно будет объявлять это с использованием какого-либо JavaScript. Вы можете просто использовать required Вместо этого атрибут HTML5, и плагин jQuery Validate все равно его подберет.

<input type="text" name="produto[0]" required="required" />
<input type="text" name="produto[1]" required="required" />
<input type="text" name="produto[2]" required="required" />
<input type="text" name="produto[3]" required="required" />
<input type="text" name="produto[4]" required="required" />

Если вы используете produto как массив, вы должны указать его индекс, иначе он не будет работать так, как ожидалось. Попробуйте использовать produto[0] чтобы указать, что вам требуется хотя бы одно значение в вашем массиве.

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