在我的MVC5 Razor代码中输入出生日期我正在使用如下的日期选择器
@Html.EditorFor(model => model.date_of_birth,new { htmlAttributes = new { @class = "m-wrap datepicker" } })
这里为model.date_of_birth,一个EditorFor正在调用并将其作为一个带有@class = datepicker的日期选择器
然后使用下面的代码在脚本区域启动datepicker
$('.datepicker').datepicker({ format: 'yyyy-mm-dd',autoclose: true })
这里的日期格式是’yyyy-mm-dd’,它工作正常,但用户希望它是dd-mm-yyyy格式.所以我把脚本中的格式改为dd-mm-yyyy
在Internet Explorer中它工作正常,但在Chrome中它给出了某个日期的错误
eg: 14-05-2015
The field Date of Birth* must be a date.
2015年5月11日的日期在铬也很好.所以我猜Chrome正在采用mm-dd-yyyy的日期格式.
格式’dd-M-yyyy’也正常工作只有dd-mm-yyyy的错误
有什么办法可以克服这个浏览器特定的错
编辑
$.validator.addMethod('date',function (value,element) { if (this.optional(element)) { return true; } var valid = true; try { $.datepicker.parseDate('dd/mm/yyyy',value); } catch (err) { valid = false; } return valid; }); $(function () { $('.datepicker').datepicker({ format: 'dd/mm/yyyy',autoclose: true }) });
解决方法
最后我找到了解决方案.
首先,我创建一个名为jquery.validate.date.js的新java脚本文件
用下面的代码
$(function () { $.validator.methods.date = function (value,element) { if ($.browser.webkit) { var d = new Date(); return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value))); } else { return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); } }; });
它覆盖了jquery.validate.js中的日期验证功能
然后我在’jquery.validate.js’之后调用脚本,如下所示
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.val.js")"/> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.val.date.js")"/>
现在日期格式dd / mm / yyyy在chrome和IE中都有效,没有任何错误.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。