有没有办法将动态参数传递给自定义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
}
}
});
如果我按上述方式运行它,它可以正常工作。如果我将传入lowerInt的8更改为$('#highInt')。val(),它似乎只设置了一次lowerInt函数的值,并且从不更新它。我意识到我可以通过调用$('#highInt')。val()来获取方法中的值,但是如果可能的话我想传递该值。
答案 0 :(得分:15)
我会传递一个选择器,就像这样:
//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'
}
}
});
此版本将使用数字或选择器,使其尽可能灵活。
答案 1 :(得分:4)
使参数成为一个函数。
$("#form1").validate({
rules: {
lowInt: {
required: true,
integer: true,
lowerInt: function(){ return $('#highInt').val(); }
}
}
});
然后在validate方法中调用函数,如
var high = params[0]();