繁体   English   中英

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

[英]jQuery Validation Plugin this.optional is not a function

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

我的例子:

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 不是函数。 检查 element 时发生异常,请检查“strongPassword”方法。

那是我的问题?

该问题与this有关。 当您使用箭头函数时(您有 2 种情况), this指的是上层的 div 上下文,在您的情况下是this ,其中onRendered已被调用。 arrow function更改为简单函数以获得适当的this上下文。

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:

$.validator.prototype.optional(element)

暂无
暂无

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

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