gpt4 book ai didi

jquery - 将 jQuery Validation 插件中的验证方法与 "or"而不是 "and"结合起来

转载 作者:行者123 更新时间:2023-12-01 00:59:24 25 4
gpt4 key购买 nike

在 jQuery 验证插件中,有几个方法可以执行相同的操作,但针对不同的区域设置,例如 dateISOdateDE ,两者都验证日期格式。如何组合这些以便输入元素接受其中一个

假设我有一个 <input type="text" name="dateInput" id="dateInput" />在我的表单中,我希望允许用户在此字段中仅输入日期。但是,我希望允许多种不同的日期格式 - 例如,用户应该能够输入 ISO 日期 根据德国日期规则格式化的日期。

如果我这样做

rules: { dateInput: { required: true, dateISO: true, dateDE: true } }

该表单永远有效,因为两种日期格式都是必需的,而该要求永远无法满足。有没有办法将它们组合为“或”而不是“和”,而无需编写自己的验证方法?

如果我必须自己编写,如何使其尽可能通用?

最佳答案

虽然您可以像 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 was removed 中。它现在位于 localization file它只是覆盖 date 方法。如果您使用的旧版本没问题,请坚持使用 dateDE

You can try a demo here

<小时/>

评论更新:更通用的表单如下所示:

$.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 } }
}
});

You can try a demo here ,这需要任意数量的验证器函数并运行它们,至少有一个必须返回 true 才能成功。

关于jquery - 将 jQuery Validation 插件中的验证方法与 "or"而不是 "and"结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com