Jquery 模糊事件干扰所有其他事件

Jquery blur event interfering with all other events

本文关键字:事件 其他 干扰 模糊 Jquery      更新时间:2023-09-26

我有一个包含多个字段的表单。我在所有字段上都有 jquery 模糊事件处理程序,当您离开字段时会进行一些验证。问题是,如果您曾经专注于某个字段,然后单击页面上的任何其他链接,它会验证该字段,但永远不会允许单击该链接(或提交表单)。

$('.required').bind('blur', function(event) {
    validateAll($(event.target));
});
function validateAll(elm) {
   //blah blah
   return false;
}

validateAll 函数只执行检查并在之后返回 false。

基本上,当用户专注于某个字段时,他们必须单击任何按钮两次才能使其正常工作。第一个激活模糊验证,然后第二个实际点击链接。

关于发生了什么的任何想法?

我发现了其他一些与此类似的帖子。

常见的解决方案是尝试在模糊事件处理程序中添加延迟,如下所示:

$('.required').bind('blur', function(event) {
    setTimeout(function() 
    { 
        validateAll($(event.target)); 
    }, 10);
});

希望这有帮助...

您没有在模糊处理程序中返回 validateAll,尽管您说它"只是执行检查并在之后返回 false"。 如果它返回 false 以尝试防止进一步的事件冒泡,则您希望返回它,而不仅仅是调用 validateAll(并且不对它返回的内容执行任何操作)。

不要看到这些会导致您所描述的问题,但也许我只是误解了这个问题。