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)