字段'BirthDate'必须是日期 MVC 4, Internet Explorer 11



在这个线程中也问了同样的问题字段';日期';必须是一个日期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" });

最新更新