我正在使用Jon和Mike E.在Validate that end date is greater than start date with jQuery中描述的jQuery Validation方法“greaterThan”
但是当我发过来时: EndDate:{greaterThan:“#StartDate”} 结果消息是“必须大于#StartDate”。我想做点什么 EndDate:{greaterThan:[“#StartDate”,“Start Date”]}
但我不确定如何修改“greaterThan”方法。我尝试将'value'更改为'options [0]',但那是一次失败。
有什么建议吗? 谢谢。 萨姆。
答案 0 :(得分:6)
the jQuery Validate plugin内没有名为greaterThan
的规则或方法。您引用的答案仅仅是使用插件的.addMethod()
方法来创建名为greaterThan
的自定义规则。
引用OP:
“但是当我发送时:
EndDate: { greaterThan: "#StartDate" }
结果消息是'必须大于#StartDate'。我想做EndDate: { greaterThan: ["#StartDate","Start Date"] }
之类的事情。” < / p>
你的问题写得非常糟糕。但是,如果我理解正确的话,
请参阅the second example in the documentation,其中正确显示了如何在函数和错误消息中使用多个参数。
假设您要传递第二个参数以改进错误消息,只需使用消息中的{1}
访问此第二个参数。
在函数中,使用params[0]
访问第一个参数。
换句话说......
当您使用多个参数声明规则时,如此示例...
rules: {
field: {
customRule: [x,y]
}
}
在jQuery.validator.addMethod("customRule", function(value, element, params){...}, "message")
内,参数如下:
在函数中:
params[0]
等于x
params[1]
等于y
:
{0}
等于“x”
{1}
等于“y”
"Must be between {0} and {1}"
将显示为“必须介于x和y之间”
假设linked answer中的功能正确,请按以下方式应用编辑...
jQuery.validator.addMethod("greaterThan", function(value, element, params) {
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(params[0]).val());
}
return isNaN(value) && isNaN($(params[0]).val()) || (Number(value) > Number($(params[0]).val()));
},'Must be greater than {1}.');
按照您的要求声明规则......
$("form").validate({
rules: {
EndDate: {
greaterThan: ["#StartDate","Start Date"]
}
}
});
修改强>:
根据评论,只需检查第一个字段是否为空,然后再做其他事情......
jQuery.validator.addMethod("greaterThan", function(value, element, params) {
if ($(params[0]).val() != '') {
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(params[0]).val());
}
return isNaN(value) && isNaN($(params[0]).val()) || (Number(value) > Number($(params[0]).val()));
};
return true;
},'Must be greater than {1}.');
答案 1 :(得分:0)