Jquery Validator动态参数

bpr*_*ard 11 jquery jquery-validate

有没有办法将动态参数传递给自定义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
        }
     }
 });
Run Code Online (Sandbox Code Playgroud)

如果我按上述方式运行它,它可以正常工作.如果我将传入lowerInt的8更改为$('#highInt').val(),它似乎只设置了一次lowerInt函数的值,并且从不更新它.我意识到我可以通过调用$('#highInt').val()来获取方法中的值,但是如果可能的话我想传递该值.

Nic*_*ver 16

我会传入一个选择器,像这样:

//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'
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

此版本将采用数字选择器,使其尽可能灵活.