Использование JQuery Validate Plugin для проверки нескольких полей формы с одинаковыми именами - PullRequest
47 голосов
/ 31 мая 2009

У меня есть динамически сгенерированная форма с одноименными полями ввода (например: «карта»). У меня нет возможности изменять имена полей или генерировать уникальные имена полей, потому что код обработчика формы (Perl / CGI) предназначен для обработки массива входных значений (в данном случае @map).

Как я могу использовать JQuery Validate Plugin для проверки формы в такой ситуации? В частности, я бы хотел, чтобы ровно один элемент представленного массива имел определенное фиксированное значение. В настоящее время я использую пользовательский обработчик событий, который создает объект JSON с serializeArray(), а затем пересекает его, чтобы убедиться, что условие выполнено. Но так как я использовал плагин Validate в остальной части приложения, мне было интересно, может ли такой случай быть обработан с использованием того же самого плагина и здесь.

Спасибо за внимание.

Ответы [ 12 ]

0 голосов
/ 19 сентября 2011

Существует простое решение:

$(document).ready(function() {
   $(".form").each(function() {
      $(this).validate({
         ...
         ,errorContainer: $(".status_mess",this) // use "this" as reference to that instance of form.
         ...
      });
   });
});
0 голосов
/ 02 июня 2009

Я думаю, вы неправильно поняли работу HTML-форм. Каждый элемент формы должен иметь уникальное имя, за исключением нескольких флажков и кнопок, которые позволяют выбрать один / несколько параметров для одного поля данных.

В вашем случае не только валидация JQuery, но и валидатор форм на стороне сервера может завершиться ошибкой, поскольку он не может назначить входные данные полям данных. Предположим, вы хотите, чтобы пользователь ввел имя, фамилию, адрес электронной почты, факс (необязательно), и все ваши поля ввода имеют name="map"

Тогда вы получите эти списки при отправке:

map = ['Joe','Doe','joe.doeAThotmail.com','++22 20182238'] //All fields completed
map = ['Joe','Doe','joe.doeAThotmail.com'] //OK, all mandatory fields completed 
map = ['Doe', 'joe.doeAThotmail.com','++22 20182238']//user forgot prename, should yield error

Вы видите, что невозможно достоверно проверить эту форму.

Я рекомендую пересмотреть документацию вашего обработчика Perl-формы или адаптировать его, если вы написали его самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...