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

本文关键字:日期 验证 问题 方法 valid JQuery | 更新日期: 2023-09-27 17:52:40

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

当我在表单上调用验证方法时,它返回false。我没有从Kendo得到验证错误,只是从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

谢谢。

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

将其放入脚本中,并从这里获取正则表达式:

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

这是WebKit浏览器和jQuery验证的一个已知问题。这个问题似乎在一段时间前就已经在团队中提出了,但许多用户仍在报告问题。

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

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

或者,通过找到函数

破解jquery.validate.js:
date: function (value, element) 

然后插入像这样的东西,从这篇文章中摘取(请注意$。浏览器现在已弃用,下面举例说明一种可能的方法):

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));
}