en-GB日期不显眼的validation

我正在使用asp.net MVC4设计一个数据输入表单,它有一个类型为date的输入。

在chrome和jQueryUI datepicker中使用不显眼的jQuery库我仍然收到错误(字段news_date必须是日期。),在选择正确的日期格式后,使用datepicker(即14/02/2013)并提交表单。

一些搜索建议我应该使用jQuery.globilization库。 因此,在阅读文档后,我添加了对以下脚本的引用。

$(document).ready(function () { $.culture = Globalize.culture("en-GB"); $.validator.methods.date = function (value, element) { return this.optional(element) || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB"); } }); 

但是我仍然得到错误

如果我在chrome中调试上面的代码我可以看到“value”的值是“2014-02-14”。

下面是渲染的html。

 
$(function () { $(".datepicker").datepicker({ dateFormat: "dd/MM/yyyy" }); }); The field news_date must be a date.

更新 :顺便提一下,如果我将validation器方法更改为硬编码。 即

 $.validator.methods.date = function (value, element) { return this.optional(element) || Globalize.parseDate("14/03/2014", "dd/MM/yyyy", "en-GB") } 

有用。 因此,它肯定是在POST之前存储在页面上的日期或提交validation的格式。

选择日期之后更新如果我在chrome控制台中运行$('#news_date').val() ,我得到“2014-02-14”并且我可以调试我的脚本并看到值传递给它validation器方法它是这个值,因此它与英国日期格式不匹配,因此返回null,而不是通过validation的值。 那么我的问题是日期选择器如何在选择后存储日期?

有没有人在Chrome中找到解决方法?

这种解决方法似乎处理chrome和ie等。在chrome中我无法输入错误的日期,因此日期选择器将给我一个有效的日期,当它传递给validation器函数时,它将采用yyyy-mm-dd格式。 即,让我直接输入输入或使用选择器,键入无效的日期,即2/30/2013(在en-GB文化中无效)它正确地使其无效并阻止进一步的进展。 如果没有更好的建议,我认为生病是最好的可行答案

 $(document).ready(function () { $.culture = Globalize.culture("en-GB"); $.validator.methods.date = function (value, element) { //This is not ideal but Chrome passes dates through in ISO1901 format regardless of locale //and despite displaying in the specified format. return this.optional(element) || Globalize.parseDate(value, "dd/mm/yyyy", "en-GB") || Globalize.parseDate(value, "yyyy-mm-dd"); }}); 

我可以建议你另外解决,把它放在你的web.config中,以避免不同的文化设置问题。

  

在Jquery datepicker中这就足够了,

  $(function () { $(".datepicker").datepicker({ dateFormat: "dd/MM/yyyy" }); }); 
 $(function () { $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' }); });