我需要覆盖jquery.validate中的date
函数.js
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function (value, element) {
return this.optional(element) || !/Invalid|NaN/.test(new
Date(value).toString());
}
为了处理IE日期,并且在它在我的本地机器上工作时,我的测试服务器上出现了错误。
我创建了一个jquery.validate.custom.js在那里我复制并修改了函数,假设它会覆盖它。这是我所拥有的:
// http://docs.jquery.com/Plugins/Validation/Methods/date
date: function (value, element) {
if ($.browser.webkit) {
//ES - Chrome does not use the locale when new Date objects instantiated:
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));
}
}
但在Windows 2012服务器上的IE11中,它抛出以下错误:
JavaScript critical error at line 2, column 16 in
http://localhost:60306/Scripts/jquery.validate.custom.jsnnSCRIPT1010:
Expected identifier
查看代码时,我可以清楚地看到它突出显示了以下中的开括号:
date: function (...
当我将鼠标移到它上面时,它会显示Expected identifier
.
有什么想法吗?
谢谢。
您可以在加载 jquery.validate 库后尝试调用 validator.addMethod 方法,如下所示:
$(function () {
$.validator.addMethod(
"date",
function (value, element) {
var bits = value.match(/([0-9]+)/gi), str;
if (!bits)
return this.optional(element) || false;
str = bits[1] + '/' + bits[0] + '/' + bits[2];
return this.optional(element) || !/Invalid|NaN/.test(new Date(str));
},
"Please enter a date in the format dd/mm/yyyy"
);
});
我所知,@Mervan-Agency的答案应该有效(我在没有实际测试的情况下对它投了赞成票(,但我认为你也可以这样做:
$.validator.methods.date = function (value, element) {
if ($.browser.webkit) {
//ES - Chrome does not use the locale when new Date objects instantiated:
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));
}
}
代码的问题在于您复制并粘贴了一段 JSON,这在原始上下文之外无效。