我正在尝试进行jquery远程验证以查看名称是否唯一,但我不想对每个onkekup事件进行远程验证,但是我想在blur事件上执行此操作(当用户离开文本框)。但是使用下面的当前代码,按下第二个字符后它会激活。我想继续将其余的规则激发onkeyup,如需要,minlength和其他元素的规则。 是否只有单一规则才能控制此行为的属性?我注意到整个表单的默认设置。
elem.validate({
ignore: "",
rules: {
name: {
required: true,
minlength: 2,
maxlength: 60,
remote: {
url: "/api/IsUniqueName",
onkeyup: false,
type: "get",
contentType: "application/json",
data: {
name: function () {
return elem.find('input[name^=Name]').val();
}
},
headers: {
RequestVerificationToken: Indexreqtoken
},
}
},
...
答案 0 :(得分:4)
您无法将onkeyup
选项放在remote
规则中......这不是remote
方法的工作方式。 The remote
method只能接受与jQuery .ajax()
相同的选项,而不能接受任何其他选项。
但是,您无法在“按规则”的基础上限制或控制触发事件。这些事件是针对整个表单捕获的,也可以是在每个字段上单独捕获的,它们不能局限于特定的规则。
如果您想将插件的onkeyup
功能限制在某些字段,那么您可以在onkeyup
选项中使用条件...
$('#myForm').validate({
onkeyup: function(element, event) {
if ($(element).attr('name') == "name") {
return false; // disable onkeyup for your element named as "name"
} else { // else use the default on everything else
if ( event.which === 9 && this.elementValue( element ) === "" ) {
return;
} else if ( element.name in this.submitted || element === this.lastElement ) {
this.element( element );
}
}
},
ignore: [], // <- note the proper format for the "ignore nothing" setting.
rules: {
name: {
required: true,
minlength: 2,
maxlength: 60,
remote: {
url: "/api/IsUniqueName",
....
修改强>
引用OP :
“是否没有控制此行为的属性,仅针对单一规则?”
不,不能在“按规则”的基础上控制触发事件。它们只能控制整个表格或特定领域,如上所示。