jQuery更改事件序列

时间:2018-09-15 09:09:45

标签: javascript jquery javascript-events

我已经在表单上的textarea中添加了ajax验证,并使用html中的onblur对其进行了初始化。但是我注意到,如果我去提交,onblur事件不会触发。阅读了很多背景知识之后,我发现了setTimeout的一个技巧,我认为应该通过将提交延迟到模糊之后才能起作用。但是我显然做错了事,或者因为它不起作用而误解了实际发生的事情。

我已经在页脚中读入我的页面的文件中的文档就绪块中编写了以下代码:

$('button[type="submit"]').click(function(){
    setTimeout(() => this,0);
    $("#description").trigger('blur');
});

任何人都可以看到/解释我的问题

1 个答案:

答案 0 :(得分:0)

据我了解,您使用AJAX将文本字段值发送到服务器以对其进行验证。

setTimeout函数在您的情况下无济于事。您必须先等待验证结果。验证结果到达后,提交表单。

因此您的代码可能如下所示:

var isValid;

$("#description").on('blur', function(event){
    isValid = false;
    startValidation().then(function(){
        isValid = true;
        form.submit();
    });
});

$('button[type="submit"]').on('click', function(event){
    if (!isValid){
        event.preventDefault();
        return false;
    }
});