我正在尝试使用jQuery validate链接两个表单字段。 用户最多只能输入5年,但这可分为两个输入,数月和数年。
我已经解决了以下问题:我觉得它应该融合在一起:
$('#leform')validate({
debug: true,
rules: {
years : {
required : {
depends: function(element) {
var x = ($('#years').val() == 5) && ($('#months').val() == 0),
y = ($('#years').val() < 5),
z = (x || y);
return z;
},
number : true,
max : 5,
min : 0
},
months : {
required : true,
number : true,
min: 0,
max: 11
}
}
});
用户可以输入,3年6个月,没问题,但问题出在用户输入5年,4个月时我无法获得验证。有什么想法吗?
-------- EDIT / SOLUTION ---------
对不起我是一个非常新的用户(长时间潜伏)所以不得不编辑问题以发布答案
好吧事实证明我错误解释了规范,看起来“required”是一个布尔值true或false。
我使用以下内容扩展了验证:
jQuery.validator.addMethod("yearCount", function(value, element) {
var x = ($('#years').val() == 5) && ($('#months').val() == 0),
y = ($('#years').val() < 5),
z = (x || y);
return z;
}, "blah blah blah");
并更新规则如下:
required : true,
max : 5,
min : 0,
yearCount : true
答案 0 :(得分:2)
我认为您可以对两个控件的depends:
属性使用以下函数:
function (){
return $('#years').val() * 12 + $('#months').val() * 1 <= 60;
}
答案 1 :(得分:0)
这可能有所帮助:
$('#leform').validate({
debug: true,
rules: {
years : {
required : {
depends: function(element) {
return (($(element).val() == 5 && $('#months').val() == 0) || ($(element).val() < 5));
},
number : true,
max : 5,
min : 0
},
months : {
required : true,
number : true,
min: 0,
max: 11
}
}
}
});