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