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

时间:2014-08-31 08:24:24

标签: asp.net-mvc-4 internet-explorer-11

在这个帖子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提供了错误,然后我更改了日期函数的定义(用以前的定义替换代码)仍然给出了错误"生日必须是日期"

1 个答案:

答案 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" });