【发布时间】:2020-01-06 16:16:41
【问题描述】:
我正在尝试将一些自定义验证集成到我的特定字段的表单中。
我有两个,但我专注于 yy/mm/dd
为此,我能够找到这个表达式:
^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$
我添加到这段 jquery 中,我正在从加拿大邮政编码自定义验证中重复使用该代码
//date format yy/mm/dd
jQuery.validator.addMethod("yearMonthDay", function (yymmdd, element) {
return this.optional(element) ||
yymmdd.match(/^\d{2}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/);
}, "Please use the correct format yy/mm/dd.");
这样做的方式是,当有人输入时,我可以通过字段看到错误,但我可以提交任何内容,所以这不起作用。
$("#form").validate({
rules: {
Birthdate: {
required: true,
yearMonthDay: true
}
}
});
谁能帮帮我?告诉我哪里出错了?
【问题讨论】:
-
您需要提供有关其余代码/表单的更多信息。如果正则表达式正常工作但表单未提交,则听起来问题与您的问题所述的正则表达式无关。
-
表单确实提交了,它似乎忽略了这一点,我可以在输入字段中输入任何内容,并看到消息“请使用正确的格式 yy/mm/dd。”并提交。
-
把
\-改成\/ -
显示表单的 HTML 标记,以便我们知道您没有犯任何错误。否则,您的代码绝对不会像您声称的那样让我 “提交任何东西”。 jsfiddle.net/n1e95gbz 换句话说,您发布的代码仅显示您的正则表达式存在问题(
yy-mm-dd而不是yy/mm/dd),因为它工作正常,否则验证不允许我提交 "anything" i>.
标签: jquery regex jquery-validate