HTML-5 date field shows as “mm/dd/yyyy” in Chrome, even when valid date is set
我刚刚将ASP.Net MVC应用程序升级到MVC-4。基于DateTime值的输入的字段编辑器现在包括HTML-5
现在,在Chrome中查看时,我的日期输入在输入字段中显示为"mm / dd / yyyy":
即使我使用value属性传递正确格式的日期:
1 | <input value="2012/10/02" type="date"/> |
我仍然在输入框中输入"mm / dd / yyyy",直到用户手动更改值为止。
问题似乎与Chrome有关,并且与我的后端框架无关。在操作中看到这个问题:jsFiddle
...当然,编辑记录的大问题。如果用户提取已有有效日期的记录,则不会在提交时通过验证,除非他/她单击该字段并手动重置该值。
没有其他浏览器的问题。
这是Chrome错误吗?或者我错过了关于HTML-5日期字段应该如何工作的方式?
UPDATE
看到这个修改小提琴:http://jsfiddle.net/HudMe/5/它有一个HTML-4和一个HTML-5日期输入,每个输入都设置为"10/01/2012"作为页面加载的值。
单击任一日期字段。
Javascript应该使用该元素的字段值来发出警报。
由于已使用value属性传递了有效日期,因此应显示"10/01/2012",但在Chrome中,对于HTML-5日期字段,不会显示任何内容。手动重置此值,然后再次单击,现在将显示。
HTML5字段中的值按预期显示和警告,无需在Safari,Firefox,IE和Opera中的页面加载后进行调整。
关于接受答案的说明:
对于Asp.net mvc-4的其他用户,您可以使用视图模型中DateTime字段声明中的
在chrome中设置你需要做的值
因此,要使其工作,您需要将日期设置为
有同样的问题。一位同事用jQuery.Globalize解决了这个问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script src="/Scripts/jquery.validate.js" type="text/javascript"> <script src="/Scripts/jquery.globalize/globalize.js" type="text/javascript"> <script src="/Scripts/jquery.globalize/cultures/globalize.culture.nl.js"> <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); }; |
我正在使用jQuery Datepicker来选择日期。
如果您正在处理表并且其中一个日期恰好为null,则可以像这样编写代码:
1 2 3 4 5 6 7 8 9 10 | @{ if (Model.SomeCollection[i].date_due == null) { <td><input type='date' id="@("dd" + i)" name="dd" /></td> } else { <td><input type='date' value="@Model.SomeCollection[i].date_due.Value.ToString("yyyy-MM-dd")" id="@("dd" + i)" name="dd" /></td> } } |
我有同样的问题,有一个像2016-08-8的值,然后我解决了添加一个零有两位数的日子,它的工作原理。
在chrome,firefox和Edge中测试过
1 2 3 4 5 6 7 8 | 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; } |
我有同样的问题,我找到了解决方案,下面给出了完整的datepicker使用简单的HTML,Javascript和CSS。在这个代码中,我准备像dd / mm / yyyy这样的合成,但你可以工作。
HTML代码:
1 2 3 4 5 | <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代码:
1 | #dt{text-indent: -500px;height:25px; width:200px;} |
Javascript代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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; } |
输出: