Javascript jQuery验证插件this.optional不是函数

Javascript jQuery验证插件this.optional不是函数,javascript,jquery,meteor,Javascript,Jquery,Meteor,我创建了一个自定义验证。在文档中我找到了方法 我的例子是: Template.Login.onRendered(() => { jQuery.validator.addMethod('strongPassword', (value, element) => { return this.optional(element) || value.length >= 6 && /\d/.test(value) &&a

我创建了一个自定义验证。在文档中我找到了方法

我的例子是:

Template.Login.onRendered(() => {
  jQuery.validator.addMethod('strongPassword', (value, element) => {
    return this.optional(element)
      || value.length >= 6
      && /\d/.test(value)
      && /[a-z]/i.test(value);
  }, 'Your password must be at least 6 characters long and contain at least one number and one char.');

$('.login-form').validate({
    rules: {
      password: {
        required: true,
        strongPassword: true
      }
    }
  });
});
我得到一个错误:

_this.optional不是一个函数。检查元素时发生异常,请检查“strong密码”方法


这就是我的问题?

这个问题与
这个问题有关。当您使用箭头函数时(这里有两种情况),
this
引用上面一种的div上下文,在您的情况下是
this
,其中调用了
onRendered
。将
箭头函数
更改为简单函数,以获取相应的
上下文

jQuery.validator.addMethod('strongPassword', function (value, element) {
    return this.optional(element)
      || value.length >= 6
      && /\d/.test(value)
      && /[a-z]/i.test(value);
  }, 'Your password must be at least 6 characters long and contain at least one number and one char.');

我知道这是一个老问题,但我最近在将代码转换为ES6后遇到了这个问题

标准:

this.optional(element)
ES6:


$(…)。可选不是函数。接受的答案是正确的,但此答案是正确的。答案确实有效,但对我来说仍然是个谜,我无法找到有关ES6和此特定案例的信息。因此,任何人或Rylee都可以向我提供它工作的原因吗?@xdevx32
可选的
属性是
验证程序
类的标准方法。它似乎不是特定于实例的(即不在其中使用
this
),因此我们可以在
jQuery.validator
的原型上调用默认方法,并将元素作为参数传入
$.validator.prototype.optional(element)