将 jQuery 验证插件中的验证方法与“或”相结合代替“和”
在 jQuery 验证插件中,有几个方法可以执行相同的操作,但针对不同的区域设置,例如 dateISO
和 dateDE
,它们都验证日期格式。如何组合这些以便输入元素接受其中一个?
假设我的表单中有一个 ,并且我希望允许用户在此字段中仅输入日期。但是,我希望允许多种不同的日期格式 - 例如,用户应该能够输入 ISO 日期或 根据德国日期规则格式化的日期。
如果我这样做,
rules: { dateInput: { required: true, dateISO: true, dateDE: true } }
表单将永远有效,因为两种日期格式都需要,并且该要求永远无法满足。有没有办法将它们组合为“或”而不是“和”,而无需编写自己的验证方法?
如果我必须自己编写,我该如何使其尽可能通用?
In the jQuery Validation plugin there are a couple of methods that do the same thing, but for different locales, for example dateISO
and dateDE
, that both validate date formatting. How do I combine these so that the input element accepts either?
Let's say I have an <input type="text" name="dateInput" id="dateInput" />
in my form, and I want to allow users to enter only dates in this field. However, I want to allow for several different date formats - for example, the user should be able to enter either an ISO date or a date formatted accoding to German date rules.
If I do
rules: { dateInput: { required: true, dateISO: true, dateDE: true } }
the form will never be valid, as both date formats will be required and that requirement can never be fulfilled. Is there a way to combine these as an "or" instead of as an "and", without having to write my own validation method?
And if I do have to write my own, how do I make it as generic as possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
虽然您可以像 Reigel 那样组合正则表达式,但您也可以直接调用这些方法(以防它们发生变化!),如下所示:
现在我有
date
而不是dateDE
在这里,因为在较新版本的插件dateDE< /code> 已删除
。它现在位于 本地化文件 中,该文件仅覆盖 <代码>日期方法。如果您使用的是旧版本,那就没问题,只需坚持使用
dateDE
即可。您可以在此处尝试演示
评论更新: 更通用的表单如下所示this:
规则如下所示:
您可以在此处尝试演示,这需要任意数量的验证器函数并运行它们,至少有一个必须返回
true
才能成功。While you can combine the regexes like Reigel has, you can also just call those methods directly (in case they change!), like this:
Now I have
date
instead ofdateDE
here, because in newer versions of the plugindateDE
was removed. It's now in a localization file that just overrides thedate
method. If you're using an older version that's fine, just stick withdateDE
.You can try a demo here
Update for comments: A more generic form would look like this:
The rules would look like this:
You can try a demo here, this takes any number of validator functions and runs them, at least one must return
true
for it to succeed.源
让我们结合起来......:)
source
lets combine it... :)