MVCdate时间validation – 英国date格式
我有一个简单的视图与两个date字段的ValidationMessageFor控件添加为不显眼的JavaScriptvalidation。
我的问题是我不断告诉我的date是无效的,当它是在正确的格式(日/月/年)
我已经添加到我的web.config,并且还包括[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
在每个DateTime属性,但它仍然不会接受英国格式的date。
有什么明显的我在这里失踪?
其实你只需要重载date不显眼的JavaScriptvalidation方法
jQuery(function ($) { $.validator.addMethod('date', function (value, element) { if (this.optional(element)) { return true; } var ok = true; try { $.datepicker.parseDate('dd/mm/yy', value); } catch (err) { ok = false; } return ok; }); });
博赫丹的榜样工作了一个享受! 我已经+1你的回答队友。
为了完整起见,我写了一篇关于如何整合所有部分(模型,视图,自定义EditorTemplate,jQuery包括并添加Bohdan的解决scheme)的博文。
你可以在这里阅读: http : //www.kestrelblackmore.com/blog/jquery-datepicker-mvc4
我知道这是旧的,但使用这个我添加到input一个属性与当前date格式(我从CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToLower()从ASP MVC代码中提取)。
然后,我重写了validationJavaScript以使用该属性中find的格式。
var format = "mm/dd/yyyy"; if (element.attributes["data-format"]) { format = element.attributes["data-format"].value; }
我也读jQuery的dateselect器相同的属性。 它可能不是那么有用,但它至less可以保持与文化相一致的格式。 虽然它可以帮助某人
与其他答案相比,我采取了不同的方法来解决这个问题。 使用jQuery添加一个新的date函数,这将强制date使用应用程序中设置的当前本地文化。
$.validator.addMethod('date', function (value, element) { var d = new Date(); return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value))); });
这是如果它在jQueryvalidation失败。 我相信这个答案,可以在这里阅读埃尔顿斯通曼职位
希望这会帮助别人。
尝试改变这个直接在jquery.validate.js。 使用$ .datpicker
date: function (value, element) { var s = value; var ind2 = 3; var ind3 = 6; var ind4 = 4; if (s.substr(6, 1) != "2") { ind2 = ind2 + 1; ind3 = ind3 + 1; ind4 = ind4 + 1; } var ndan = s.substr(0, 2); var nmje = s.substr(ind2, 2); var ngod = s.substr(ind3, ind4); var ns = ngod + "," + nmje + "," + ndan; return this.optional(element) || !/Invalid|NaN/.test(new Date(ns));