jQuery仅validation远程onblur但允许onkeyup for rest

我正在尝试进行jquery远程validation以查看名称是否唯一,但我不想对每个onkekup事件进行远程validation,但我想在blur事件上执行此操作(当用户离开文本框时) )。 但是使用下面的当前代码,在按下第二个字符后它会激活。 我想继续将其余的规则激发onkeyup on required和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 }, } }, ... 

您不能将onkeyup选项放在remote规则中…这不是remote方法的工作方式。 remote方法只能接受与jQuery .ajax()相同的选项。

但是,您无法在“每个规则”的基础上限制或控制触发事件。 这些事件是针对整个表单捕获的,或者是在每个字段上单独捕获的,它们不能局限于特定规则。

如果你想将插件的onkeyupfunction限制在某些字段,那么你可以在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

“有没有一个属性可以控制这种行为,只是针对单一规则?”

不,触发事件无法在“每个规则”的基础上进行控制。 如上所示,它们只能控制整个表格或特定字段。

https://stackoverflow.com/a/21313848/594235