我正在使用jQuery验证插件。
我有一个自定义验证器方法。它看上去是否在使用电子邮件地址。
$.validator.methods.notinuse = function (value, element, param) {
$.post("/static/global/member/validation.ashx", { email: value})
.done(function (data) {
return data == "true";
});
};这就是所谓的。
$("#form-Registration").validate({
rules: {
Email: {
notinuse: ''
}
},
messages: {
Email: {
notinuse: "Email address in use"
}
}
});然而,这是可行的,但它似乎对每一个太频繁的关键触摸开火。
我的问题是:
1)使用自定义验证器方法,是否有方法配置调用它的事件?我认为,无论是在表单提交还是文本字段上,集中注意力都可以做到这一点。我想让它与js查询api保持一致。
发布于 2013-09-05 14:46:40
正确的格式是将自定义方法/规则设置为true或传递参数,而不是将其设置为''。您还将notinuse字段名在messages中拼错为inuse。
只要没有在每个键上触发它,就可以将onkeyup选项设置为false。这将限制您的方法只触发焦点和提交点击。但是,此设置将影响窗体上的所有字段。
$("#form-Registration").validate({
onkeyup: false, // <-- disable "onkeyup" for all form fields
rules: {
Email: {
notinuse: true
}
},
messages: {
Email: {
notinuse: "Email address in use"
}
}
});如果只想禁用这一个字段的onkeyup,可以将onkeyup设置为自定义函数。在本例中,如果元素name与notinuse匹配,则键上没有验证,否则,所有其他字段都将使用默认的onkeyup函数。
$("#form-Registration").validate({
onkeyup: function( element, event ) {
if (element.name === "notinuse") {
return false;
} else if ( event.which === 9 && this.elementValue(element) === "" ) {
return;
} else if ( element.name in this.submitted || element === this.lastElement ) {
this.element(element);
}
},
rules: {
Email: {
notinuse: true
}
},
messages: {
Email: {
notinuse: "Email address in use"
}
}
});演示1(一个字段禁用onkeyup的两个字段):http://jsfiddle.net/E9WNy/
演示2(,为您的单个字段禁用onkeyup ):http://jsfiddle.net/CJzJr/
https://stackoverflow.com/questions/18633878
复制相似问题