即使设置了有效date,Chrome 5中的HTML-5date字段也会显示为“mm / dd / yyyy”

我刚刚升级了一个ASP.Net MVC应用程序到MVC-4。 基于DateTime值的input的字段编辑器现在包括HTML-5 type="date"属性/值声明。

现在,在Chrome中查看时,我的dateinput在input字段中显示为“mm / dd / yyyy”:

日期字段,在框中输入“mm / dd / yyyy”

即使当我传递一个格式正确的date的值属性:

 <input value="2012/10/02" type="date"/> 

我仍然在input框中input“mm / dd / yyyy”,直到用户手动更改值。

这个问题似乎与Chrome,而且是独立于我的后端框架。 看到这个问题在行动: jsFiddle

当然,编辑logging是个大问题。 如果用户提取已经有效date的logging,除非他/她单击字段并手动重置值,否则不会通过提交validation。

没有其他浏览器的问题。

这是一个Chrome的错误? 或者我错过了HTML-5date字段应该工作的方式?

UPDATE
请参阅此修订小提琴: http : //jsfiddle.net/HudMe/5/它具有HTML-4和HTML-5dateinput,每个input都设置为页面加载时的值“10/01/2012”。

点击进入任一date字段。 Javascript应该用这个元素的字段值来提醒一下。

由于有效date已经通过value属性传递,因此应显示“2012年10月1日”,但在Chrome中,对于HTML-5date字段,不显示任何内容。 手动重置此值,然后再次单击,现在将显示。

在Safari,Firefox,IE和Opera的页面加载之后,HTML5字段的值显示并按预期进行警报,不需要调整。

关于接受答案的说明:
对于Asp.net mvc-4的其他用户,可以在视图模型的DateTime字段声明中使用[DisplayFormat]属性调整显示格式。 (在https://stackoverflow.com/a/12634470/613004find)

在铬设置值,你需要做YYYY-MM-DD我猜,因为这工作: http : //jsfiddle.net/HudMe/6/

所以要使它工作,你需要将date设置为2012-10-01

有同样的问题。 一位同事用jQuery.Globalize解决了这个问题 。

 <script src="/Scripts/jquery.validate.js" type="text/javascript"></script> <script src="/Scripts/jquery.globalize/globalize.js" type="text/javascript"></script> <script src="/Scripts/jquery.globalize/cultures/globalize.culture.nl.js"></script> <script type="text/javascript"> var lang = 'nl'; $(function () { Globalize.culture(lang); }); // fixing a weird validation issue with dates (nl date notation) and Google Chrome $.validator.methods.date = function(value, element) { var d = Globalize.parseDate(value); return this.optional(element) || !/Invalid|NaN/.test(d); }; </script> 

我正在使用jQuery Datepicker来selectdate。

我有同样的问题,我find了解决scheme,下面给出了使用简单的HTML,JavaScript和CSS完整的dateselect器。 在这个代码中,我准备像dd / mm / yyyy一样的对象,但是你可以工作。

HTML代码:

  <body> <input type="date" id="dt" onchange="mydate1();" hidden/> <input type="text" id="ndt" onclick="mydate();" hidden /> <input type="button" Value="Date" onclick="mydate();" /> </body> 

CSS代码:

 #dt{text-indent: -500px;height:25px; width:200px;} 

Javascript代码:

 function mydate() { //alert(""); document.getElementById("dt").hidden=false; document.getElementById("ndt").hidden=true; } function mydate1() { d=new Date(document.getElementById("dt").value); dt=d.getDate(); mn=d.getMonth(); mn++; yy=d.getFullYear(); document.getElementById("ndt").value=dt+"/"+mn+"/"+yy document.getElementById("ndt").hidden=false; document.getElementById("dt").hidden=true; } 

输出:

在这里输入图像说明

我有同样的问题,像2016-08-8值,然后我解决了添加一个零有两个数字天,它的工作原理。 testing铬,火狐和边缘

 today:function(){ var today = new Date(); var d = (today.getDate() < 10 ? '0' : '' )+ today.getDate(); var m = ((today.getMonth() + 1) < 10 ? '0' :'') + (today.getMonth() + 1); var y = today.getFullYear(); var x = String(y+"-"+m+"-"+d); return x; }