使用jQuery Validation Plugin,是否可以使用$.validator.addMethod
使用remote
功能创建自定义规则?
我尝试过以下代码:
$.validator.addMethod("custom-remote", function (value, element, param) {
if (this.optional(element)) {
return true;
}
return $.validator.methods.remote.call(this, value, element, {
url: "/checkvalue",
type: "POST",
data: {
valueToCheck: value
}
});
}, jQuery.format("{0}"));
仅在远程请求完成之前更改对输入的关注时才有效。
我不想将$.ajax()
与async: false
一起使用,因为在这种情况下可能会造成糟糕的用户体验。
答案 0 :(得分:0)
如果您想要修改版本的规则,那么您可以使用.addmethod()
方法从头开始创建新规则。换句话说,你会不在新方法中调用旧方法;相反,你会完全替换旧方法。
由于remote
规则使用.ajax()
,您可以编写remote
的自定义版本以使用.ajax()
。
引用OP:
"我的印象是addMethod必须立即返回,这意味着您需要将
async: false
与我不想做的ajax请求一起使用&#34; < / em>的
这听起来像是&#34; XY问题的经典案例&#34;:https://meta.stackexchange.com/a/66378/157574
如果您只希望remote
使用async: true
,或只是更改.ajax()
选项,那么无需编写全新方法即可完成。任何.ajax()
选项都可以非常轻松地与现有的remote
方法一起使用。
文档:http://jqueryvalidation.org/remote-method/
&#34;您提供的任何选项都将覆盖默认值。&#34;
$( "#myform" ).validate({
rules: {
email: {
required: true,
email: true,
remote: {
// change the options in here
url: "check-email.php",
type: "post",
async: true, // <- YOUR OPTION(s)
data: {
username: function() {
return $( "#username" ).val();
}
}
}
}
}
});