仅使用keyup事件触发表单validation中的文本框的一些规则,并取消其余部分的事件

我在我的应用程序中有一个表单,我正在使用jQuery表单validation插件进行validation。 其中一个规则是remote类型,用于validation用户名是否已存在。 我已经能够覆盖onkeyup事件,因此规则不会输入我输入的每个字母的服务器。我这样做的方式如下:

var validator = $("#frmSite").validate({ onkeyup: function(element) { var element_name = jQuery(element).attr('name'); if (this.settings.rules[element_name] != undefined) { if (this.settings.rules[element_name].onkeyup !== false) { jQuery.validator.defaults.onkeyup.apply(this, arguments); } } }, rules: { : { onkeyup: false, required: true, minlength: 6, remote: function () { var params = { userName: userNameTextbox.val() }; return { type: "POST", url: "services/security.asmx/UserNotExists", data: JSON.stringify(params), contentType: "application/json; charset=utf-8", dataType: "json", dataFilter: function (data) { var msg = eval("(" + data + ")"); if (msg.hasOwnProperty("d")) return JSON.stringify(msg.d); else return msg; }, error: function (jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); } }; } } } }); 

onfocusout的问题是,现在在onfocusout事件上触发远程规则,每当我点击页面中的其他内容(例如,注销按钮)时,规则就会触发。 我添加了onsubmit: false,作为validate函数选项的一部分,以及一个处理提交按钮的click事件的函数,但即使这样,规则也继续在onfocusout上触发。 为了控制这个,我添加了一个类似于我为onkeyup设置的function,因此也不会在onfocusout上触发规则,但是这样,用户获得validation消息的唯一时刻就是在点击提交按钮之后。 但是,我希望能够尽快通知用户有关错误的信息(即,一旦他输入用户名,就会立即通知用户)。 有没有办法做以下任何或所有:

  1. 为onkeyup添加延迟,以便在用户停止输入用户名后几秒钟触发规则? 这应该只影响用户名文本框,因为我不希望延迟影响表单中的其他输入。

1A。 如果以上是可能的,可以设置一种只影响remote规则的方式吗? 因此,在正常加密期间会触发required和最大长度validation,但只有remotevalidation是在几秒钟后用户停止输入?

  1. 要使onkeyup事件仅触发requiredmaxlength规则,而不是remote规则? 因此,仅当用户单击“提交”时才会触发remote规则,但在正常的keyup上触发其他两个规则

如果还有其他可能的出路,请提出建议。

谢谢。