在这个线程中也问了同样的问题字段';日期';必须是一个日期MVC 4,但我有稍微不同的问题。我在使用internet explorer 11时出错,无法解决
这是我的模型中的属性
[必需]
[显示(名称="出生日期")]
[DataType(DataType.DateTime)]
public DateTime出生日期{get;set;}
jQuery是
$(函数(){
日期格式:$.datepicker.RFC_1123
$('#BirthDate').attr('redonly',true)
$('#BirthDate').datepicker({dateFormat:"d/M/yy"})
})
和文本框的代码
@Html.TextBoxFor(model=>model.RFI.BirthDate,"{0:dd/MMM/yyyy}",new{datepicker=true,@class="textbox_medium",id="BirthDate"})
为了支持这种格式,我在jquery.validate.js文件中的函数定义"date:function(value,element)"中编写了以下代码
if($.brower.webkit){
//ES-当实例化新的Date对象时,Chrome不使用区域设置:
var d=新日期()
返回this.optional(element)||/无效的|NaN/.test(新日期(d.toLocaleDateString(value))
}
其他{
返回this.optional(element)||/无效的|NaN/.test(新日期(值));
}
上面提到的代码在Crome中正常工作,但在internet explorer 11中不起作用。首先,它给出了webkit的错误,然后我更改了日期函数的定义(用以前的定义替换代码),但它仍然给出了"生日必须是日期"的错误
我对您的场景进行了全面测试。错误发生在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" });