虽然您可以像 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");
我现在有date
代替dateDE
在这里,因为在较新版本的插件中dateDE去掉了 http://bassistance.de/2009/11/30/release-validation-plugin-1-6/。现在它在一个本地化文件 http://ajax.microsoft.com/ajax/jquery.validate/1.7/localization/methods_de.js这只是覆盖date
方法。如果您使用的是旧版本,那就没问题,只需坚持使用dateDE
.
您可以在这里尝试演示 http://jsfiddle.net/4JWAe/
更新评论:更通用的形式如下所示:
$.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");
规则如下:
$("form").validate({
rules: {
dateFieldName: { oneOf: { dateISO:true, date:true } }
}
});
您可以在这里尝试演示 http://jsfiddle.net/4JWAe/2/,这需要任意数量的验证器函数并运行它们,至少有一个必须返回true
为了它的成功。