Tom*_*han 2 jquery jquery-plugins jquery-validate
在jQuery验证插件有几个是做同样的事情的方法,但对于不同的区域,例如dateISO和dateDE,这两个验证日期格式.如何结合这些使输入元素接受要么?
假设<input type="text" name="dateInput" id="dateInput" />我的表单中有一个,我想允许用户只输入此字段中的日期.不过,我想,以使几个不同的日期格式-比如,用户应该能够进入任何一个ISO日期或 accoding德国日期规则格式化的日期.
如果我做
rules: { dateInput: { required: true, dateISO: true, dateDE: true } }
Run Code Online (Sandbox Code Playgroud)
表格将永远无效,因为两种日期格式都是必需的,并且永远无法满足该要求.有没有办法将这些组合为"或"而不是"和",而不必编写我自己的验证方法?
如果我必须自己编写,我该如何使它尽可能通用?
虽然你可以像Reigel那样组合正则表达式,你也可以直接调用这些方法(如果它们改变了!),如下所示:
$.validator.addMethod("dateISODE", function(value, element) {
return $.validator.methods.dateISO.apply(this, arguments)
|| $.validator.methods.date.apply(this, arguments);
}, "Please enter a valid ISO or German date");
Run Code Online (Sandbox Code Playgroud)
现在我没有date在dateDE这里,因为在更新版本的插件dateDE被删除.它现在位于本地化文件中,只是覆盖了该date方法.如果您使用的是旧版本,那就好了,坚持下去dateDE.
评论更新: 更通用的表单如下所示:
$.validator.addMethod("oneOf", function(value, element, params) {
for(p in params) {
if(params.hasOwnProperty(p) &&
$.validator.methods[p].apply(this, [value, element, params[p]]))
return true;
}
return false;
}, "Please enter a valid date");
Run Code Online (Sandbox Code Playgroud)
规则看起来像这样:
$("form").validate({
rules: {
dateFieldName: { oneOf: { dateISO:true, date:true } }
}
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里尝试一个演示,这需要任意数量的验证器功能并运行它们,至少有一个必须返回true才能成功.
| 归档时间: |
|
| 查看次数: |
4521 次 |
| 最近记录: |