jqueryvalidate-向keyup验证添加延迟

jqueryvalidate-向keyup验证添加延迟,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用JQuery验证插件验证我的表单,我想在验证输入之前添加一个500ms的延迟,因为它会导致错误标签快速出现和消失 我希望得到一个与JQuery验证插件相关的答案,而不仅仅是JQuery的答案 例如,当最小长度为2个字符时,我希望在显示错误标签+红色边框之前延迟500毫秒。 (如果在我的代码段中它不起作用,请尝试在表单有3个字符时提交表单,然后再键入1个字符。) $(文档).ready(函数(){ $(“#myForm”)。验证({ 是的, 规则:{ 用户名:{ 要求:正确, 最小长度

我正在使用JQuery验证插件验证我的表单,我想在验证输入之前添加一个500ms的延迟,因为它会导致错误标签快速出现和消失

我希望得到一个与JQuery验证插件相关的答案,而不仅仅是JQuery的答案

例如,当最小长度为2个字符时,我希望在显示错误标签+红色边框之前延迟500毫秒。
(如果在我的代码段中它不起作用,请尝试在表单有3个字符时提交表单,然后再键入1个字符。)

$(文档).ready(函数(){
$(“#myForm”)。验证({
是的,
规则:{
用户名:{
要求:正确,
最小长度:2
}
},
submitHandler:函数(表单)
{ 
警报(“通过验证”);
}
});   
});


只需将默认的
onkeyup
函数包装在
setTimeout()函数中即可

$("#myForm").validate({
    onkeyup: function(element, event) {
        var t = this;
        setTimeout(function() {
            // this is the default function
            var excludedKeys = [
                16, 17, 18, 20, 35, 36, 37,
                38, 39, 40, 45, 144, 225
            ];
            if (event.which === 9 && t.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
                return;
            } else if (element.name in t.submitted || element.name in t.invalid) {
                t.element(element);
            } // end default
        }, 3000);  // 3-second delay
    }, 
    ....
演示


然而,这种方法仍然需要一些工作。在某些情况下,当您调用并清除验证错误时,计时器仍在运行。我将计时器设置为3秒以高度演示此情况。

只需将默认的
onkeyup
函数包装在
setTimeout()函数中即可

$("#myForm").validate({
    onkeyup: function(element, event) {
        var t = this;
        setTimeout(function() {
            // this is the default function
            var excludedKeys = [
                16, 17, 18, 20, 35, 36, 37,
                38, 39, 40, 45, 144, 225
            ];
            if (event.which === 9 && t.elementValue(element) === "" || $.inArray(event.keyCode, excludedKeys) !== -1) {
                return;
            } else if (element.name in t.submitted || element.name in t.invalid) {
                t.element(element);
            } // end default
        }, 3000);  // 3-second delay
    }, 
    ....
演示


然而,这种方法仍然需要一些工作。在某些情况下,当您调用并清除验证错误时,计时器仍在运行。我将计时器设置为3秒,以高度演示此情况。

此处查看可能重复:。请提供实际演示此问题的代码。只需查看未缩小的版本?一切都发布在开发者的网站和GitHub页面上。@Sparky给一个人一条鱼,你喂他一天;教一个人钓鱼,你就可以养活他一辈子。可能的复制品请看这里:。请提供实际演示此问题的代码。只需查看未缩小的版本?一切都发布在开发者的网站和GitHub页面上。@Sparky给一个人一条鱼,你喂他一天;教一个人钓鱼,你就可以养活他一辈子。你能看一看吗。你能看一下吗。