Chrome 不接受使用 jQuery 验证的特定日期格式
Posted
技术标签:
【中文标题】Chrome 不接受使用 jQuery 验证的特定日期格式【英文标题】:Chrome don't accept a specific date format using jQuery Validation 【发布时间】:2014-05-17 07:11:25 【问题描述】:我使用 jQuery Validator 制作了一个日期格式,格式为:dd/mm/yyyy。
但我在 Google Chrome 中遇到了这种格式的问题。 在 IE 或 Firefox 中,日期格式运行良好,但在 Google Chrome 中,格式最多接受 12/12/yyyy。例如,IE 中的日期 20/12/2014 是可以的,但在 Chrome 中,日期是不接受的。
代码:
$.validator.addMethod(
"brDate",
function(value, element)
return value.match(/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d4$/);
,
"The correct date format is dd/mm/yyyy."
);
【问题讨论】:
欢迎来到国际约会!不要使用正则表达式验证您的日期,而是使用日期函数。在 Jquery 中查找日期函数,你会发现一些东西 【参考方案1】:大多数验证器已经有日期验证方法。
你用的是哪一个?
http://**formvalidator.net**/#default-validators_dates
<!-- Validate date formatted yyyy-mm-dd -->
<input type="text" data-validation="date">
<!-- Validate date formatted dd/mm/yyyy -->
<input type="text" data-validation="date" data-validation-format="dd/mm/yyyy">
我建议使用此类验证。
如果你想自己写模式,你可以使用这个:
^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d2|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$
MM/dd/yyyy 闰年为 100%。自 1900 年起有效。MM 和 DD 可以有 1 或 2 位数字:M/d/yyyy 或 MM/d/yyyy 或 M/dd/yyyy
取自http://regexlib.com/REDetails.aspx?regexp_id=1071
【讨论】:
我尝试在输入中使用数据验证,但没有奏效。例如,我输入 18/15/2014 (dd/mm/yyyy),这个日期在 DB 中注册。那是错的!但我解决了这个问题,如下所述。【参考方案2】:我终于解决了这个问题。
jQuery.validator.methods["date"] = function (value, element) return true;
字体:Unobtrusive validation in Chrome won't validate with dd/mm/yyyy
【讨论】:
对于未来的查看者,请注意这将接受任何值作为日期(小数、字母等)。进行服务器端解析可能就足够了,因此您只想允许表单发布,但请注意其中的含义。 这并不是真正的解决方案。这只是忽略日期验证:总是return true
以上是关于Chrome 不接受使用 jQuery 验证的特定日期格式的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 启用/禁用特定“验证组”中的 asp.net 验证控件?