在这个帖子The field 'Date' must be a date MVC 4中提出了同样的问题,但我的问题略有不同。我在使用Internet Explorer 11时遇到错误,无法弄明白。
这是我模型中的属性
[必需]
[显示(姓名="出生日期")]
[数据类型(DataType.DateTime)]
public DateTime BirthDate {get;组; }
和jQuery是
$(function(){
dateFormat:$ .datepicker.RFC_1123;
$('#BirthDate')。attr(' readonly',true);
$('#BirthDate')。datepicker({dateFormat:" d / M / yy"});
});
和文本框的代码
@ Html.TextBoxFor(model => model.RFI.BirthDate," {0:dd / MMM / yyyy}",new {datepicker = true,@ class =" textbox_medium& #34;,id =" BirthDate"})
为了支持这种格式,我在jquery.validate.js文件中编写了以下代码,函数定义为" date:function(value,element)"
if($ .browser.webkit){
// ES - 实例化新的Date对象时,Chrome不使用语言环境:
var d = new Date();
返回this.optional(元素)|| !/无效| NaN / .test(新日期(d.toLocaleDateString(value)));
}
其他{
返回this.optional(元素)|| !/无效| NaN / .test(新日期(值));
}
上述代码在Crome中正常工作,但在Internet Explorer 11中无法正常工作。首先,它为webkit提供了错误,然后我更改了日期函数的定义(用以前的定义替换代码)仍然给出了错误"生日必须是日期"
答案 0 :(得分:0)
我对您的方案进行了全面测试。在以下检查中,jquery.validate.js中的IE中发生错误:
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function( value, element ) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
},
为了快速证明,您可以尝试在IE和Chrome中的控制台中编写以下内容:
new Date('01/Jun/2001');
在Chrome中,您将获得有效日期,并且在IE中无效。
要解决此问题,请将日期检查中的格式更改为默认值“dd / mm / yy”:
$('#BirthDate').datepicker({ dateFormat: "dd/mm/yy" });