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

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

0 голосов
/ 07 октября 2010

Я использую плагин проверки jQuery для проверки моей формы на стороне клиента. Я добавляю новый метод, используя функцию addMethod для каждого элемента управления HTML, имеющего атрибут regex (custom). Мой HTML-элемент управления будет выглядеть так.

<input type="text" id="txtInf" name="txtInf" regex="some regular exp" error="check your inf"></input>

$("*[regex]").each(function () {
                  var controlId = $(this).attr('name');    
                  var regex = new RegExp((this).attr('regex'));    
                  var error = $(this).attr('error');    

            $.validator.addMethod(controlId, function (value, element) {

                return this.optional(element) || false;

            }, error);

            $(this).rules("add", { '" + controlId + "': "^[a-zA-Z'.\s]{1,40}$" }); 

            $(this).validate();
        });

Здесь я даю имя метода в виде controlId , который равен txtInf . В нижней строке мне нужно дать txtInf, но я хочу вместо этого использовать переменную controlId, так как я хочу сделать эту функцию универсальной. Но если я пишу controlId напрямую, он ищет метод с тем же. Но на самом деле добавленный метод - это txtInf. Поэтому мне нужен способ обобщить эту строку, используя переменную controlId.

$(this).rules("add", {txtInf: "^[a-zA-Z'.\s]{1,40}$" }); 

1 Ответ

0 голосов
/ 07 октября 2010

Проблема в том, что вы не можете использовать имя переменной для ссылки в литерале объекта. Что я делал в прошлом, когда мне нужно было сделать что-то вроде этого, так это вручную создать строку JSON и передать ее через parseJSON. это будет выглядеть примерно так:

$(this).rules("add", $.parseJSON('{"' + controlId + '":"^[a-zA-Z\'.\s]{1,40}$" }'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...