SC_*_*ams 1 jquery jquery-validate
我使用jQuery Validation方法"greaterThan",如Jon和Mike E.在Validate中描述的结束日期大于jQuery的开始日期
但是当我发送时:EndDate:{greaterThan:"#StartDate"}结果消息是'必须大于#StartDate'.我想做像EndDate这样的事情:{greaterThan:["#StartDate","Start Date"]}
但我不确定如何修改"更大的"方法.我尝试将'value'更改为'options [0]',但那是失败的.
有什么建议?谢谢.山姆.
有没有这样的规则或方法叫做greaterThan内的jQuery验证插件.您引用的答案仅仅是使用插件的.addMethod()方法来创建一个名为的自定义规则greaterThan.
引用OP:
"但是当我发送过来时:
EndDate: { greaterThan: "#StartDate" }结果信息是'必须大于#StartDate'.我想做类似的事情EndDate: { greaterThan: ["#StartDate","Start Date"] }."
你的问题写得非常糟糕.但是,如果我理解正确,
请参阅文档中的第二个示例,该示例正确显示了如何在函数和错误消息中使用多个参数.
假设您要传递第二个参数以改进错误消息,只需{1}在消息中使用第二个参数即可.
在函数内,使用访问第一个参数params[0].
换一种说法...
当您使用多个参数声明规则时,如此示例中所示...
rules: {
field: {
customRule: [x,y]
}
}
Run Code Online (Sandbox Code Playgroud)
在里面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之间"
假设链接答案中的函数是正确的,请按以下方式应用编辑...
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}.');
Run Code Online (Sandbox Code Playgroud)
按照您的要求声明规则......
$("form").validate({
rules: {
EndDate: {
greaterThan: ["#StartDate","Start Date"]
}
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:
根据评论,只需检查第一个字段是否为空,然后再做其他事情......
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}.');
Run Code Online (Sandbox Code Playgroud)