JQuery .valid()方法的日期验证问题

时间:2014-03-24 17:37:18

标签: c# jquery asp.net-mvc kendo-asp.net-mvc

我试图将jquery日期评估更改为en-GB文化但没有成功。 例如,对于2013年3月23日,我想输入23/03/2013而不是2013年3月23日。

当我在表单上调用验证方法时,它返回false。我没有从jndo获得验证错误,只是来自jquery方法。

如何更改jQuery的文化设置?

<script src="@Url.Content("~/Scripts/Kendo/cultures/kendo.culture.en-GB.min.js")"></script>
<script>kendo.culture("en-GB");</script>
...
@(Html.Kendo().DatePickerFor(model => model.OrderDate).HtmlAttributes(new { style = "width:150px", required = "required"  }).Culture("en-GB").Format("dd/MM/yyyy"))
...
var isValid = $("#orderForm").valid();   // returns false if I select 23/3/2013

感谢。

2 个答案:

答案 0 :(得分:1)

将其放入您的脚本中,并从此处获取正则表达式:Regex to validate date format dd/mm/yyyy

jQuery.validator.methods.date = function (value, element) {
            var dateRegex = /copyRegexHere/;
            return this.optional(element) || dateRegex.test(value);
        };

答案 1 :(得分:0)

这是WebKit浏览器和jQuery验证的已知问题。它似乎是由团队some time ago提出的,但许多用户仍在报告问题。

有几种方法可以调试并解决此问题。首先尝试重写jQuery验证,以确保这实际上是您所看到的问题:

jQuery.validator.methods["date"] = function (value, element) { return true; }

或者,通过找到函数

来攻击jquery.validate.js
date: function (value, element) 

并插入来自this post的类似内容(请注意$ .browser现已弃用,以下是说明可能的方法):

if ($.browser.webkit) {
    var d = new Date();
    return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
}
else {
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
}