2013-10-19 120 views
4

我有一个使用JQuery Mobile的MVC 4网站。我正在使用带有EditorFor的模型来呈现日期编辑器。在MVC我有这样的:JQuery Mobile日期选取器未在Chrome中显示日期

@Html.EditorFor(Function(model) model.ActionDate) 

模型属性定义为:

<Required> 
<RegularExpression("\d{2}/\d{2}/\d{4}", ErrorMessage:="Please enter a date in the format of MM/DD/YY")> 
<DataType(DataType.Date)> 
<DisplayFormat(ApplyFormatInEditMode:=True, DataFormatString:="MM/dd/yyyy")> 
<Display(Name:="Action Date")> 
Public Property ActionDate As Date 

它使得HTML与价值:

<input type="date" ... value="04/24/2013" /> 

但是显示给用户的是这样的:

Date Picker with Date not Showing

日期对用户不可见,并且4/24/2013不是Chrome日期选择器的默认值。我如何获得chrome来实际显示日期?

谢谢。

+0

Chrome浏览器正在为日期字段*进行各种“智能”编辑,这些日期字段正在推动我们坚持*。我的解决方案(下文)只是简单地将字段类型从'date'改为'text'。 –

回答

2

根据the W3C,传递给<input type="date">元素的值应为RFC3339格式。这是ISO8601的特定配置文件。

换句话说,您需要传递yyyy-MM-dd格式的值。

1

只是碰到这个完全相同的问题。

我的解决办法是通过改变类型,当我连接到日期选择器文本,以避免type="date"问题:

$('#Date').removeAttr('type').attr('type', 'text').datepicker(); 

如果你不使用jQueryUI的,只是下降的日期选择器的一部分。

正如我还需要给力的默认日期格式(再次感谢Chrome浏览器)它是:

$('#Date').removeAttr('type').attr('type', 'text').datepicker({ dateFormat: 'dd/mm/yy' }); 

Chrome浏览器正在定期与jQueryUI的问题咬我们,已经从我们最喜欢的dev的浏览器了我们最麻烦的(对于兼容性问题)。

+0

谢谢,这完全帮助了我。我仍然困惑为什么Darin Dimitrov的解决方案不适合我。在这里检查http://stackoverflow.com/questions/12633471/mvc4-datatype-date-editorfor-wont-display-date-value-in-chrome-fine-in-ie – jomsk1e

+0

@ jomsk1e:似乎是Chrome的一个问题和jQueryUI datepicker,比任何MVC的问题更多。仍在寻找*正确的*解决方案,但这可以避免Chrome太聪明(现在)。 –

相关问题