Динамические параметры валидатора Jquery - PullRequest
10 голосов
/ 11 ноября 2010

Есть ли способ передать динамические параметры в пользовательский метод проверки jquery? В частности, я искал способ сравнить 2 элемента управления и хотел бы передать один метод проверки для сравнения.

Вот что у меня сейчас есть:

 //Add method
 $.validator.addMethod("lowerInt", function(value, element, params) {
            alert('inside method');
            if (isNaN(parseInt(params)))
                return true;
            else
                return parseInt(value) < parseInt(params);
        }, $.validator.format("Please enter a number smaller than {0}")); 

 //Set validation
 $("#form1").validate({
     rules: {
        lowInt: {
            required: true,
            integer: true,
            lowerInt: 8 //I would like to pass a dynamic value here
        }
     }
 });

Если я запускаю его, как указано выше, он работает как надо. Если я передам 8, переданный в lowerInt, на $ ('# highInt'). Val (), то, похоже, установлю значение функции lowerInt только один раз и никогда не обновлю его. Я понимаю, что могу получить значение внутри метода, вызвав $ ('# highInt'). Val (), но я бы хотел вместо этого передать значение, если это вообще возможно.

Ответы [ 2 ]

15 голосов
/ 11 ноября 2010

Я бы передал селектор, например, так:

//Add method
$.validator.addMethod("lowerInt", function(value, element, params) {
  var hi = typeof params[0] == "string" ? 
           parseInt($(params[0]).val(), 10) :
           params[0];
  if (isNaN(hi))
    return true;
  else
    return parseInt(value) < hi;
}, $.validator.format("Please enter a number smaller than {0}")); 

//Set validation
$("#form1").validate({
  rules: {
    lowInt: {
        required: true,
        integer: true,
        lowerInt: '#highInt'
    }
  }
});

Эта версия примет селектор с номером или , что сделает его максимально гибким.

4 голосов
/ 11 ноября 2010

Сделать параметр функцией.

$("#form1").validate({
     rules: {
        lowInt: {
            required: true,
            integer: true,
            lowerInt: function(){ return $('#highInt').val(); }
        }
     }
 });

Затем вы вызываете функцию в методе проверки что-то вроде

var high = params[0]();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...