即使设置了有效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”:
即使当我传递一个格式正确的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; }