繁体   English   中英

如何正确覆盖JQuery函数

[英]How to properly overwrite a JQuery function

我需要覆盖jquery.validate.js中的date函数

// 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 Server的IE11中,它会引发以下错误:

JavaScript critical error at line 2, column 16 in 
http://localhost:60306/Scripts/jquery.validate.custom.js\n\nSCRIPT1010: 
Expected identifier

查看代码时,我可以清楚地看到它突出显示了以下括号:

date: function (...

当我将鼠标移到它上面时,它会显示Expected identifier

有任何想法吗?

谢谢。

您可以在加载jquery.validate库之后尝试调用validateator.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,该段在原始上下文之外无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM