我创建了一个自定义验证。在文档中,我找到了方法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不是一个功能。检查元素时发生异常,请检查'strongPassword'方法。
这是我的问题?
答案 0 :(得分:2)
该问题与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.');
答案 1 :(得分:2)
我知道这是一个老问题,但是最近我在将代码转换为ES6之后遇到了这个问题。
标准
this.optional(element)
ES6:
$.validator.prototype.optional(element)