【问题标题】:Fire blur event unless specific element is clicked除非单击特定元素,否则触发模糊事件
【发布时间】:2012-09-05 20:53:06
【问题描述】:

我有三个搜索类别(见第一张图片)。用户选择一个,然后我在类别的空间中显示与该主题相对应的搜索输入(参见第二张图片)。我使用 jQuery 自动专注于输入,因此用户可以轻松地开始输入。如果用户改变主意并模糊了输入,我会隐藏它并再次显示三个类别。

如果用户单击输入进行搜索,这一切都很好,但我也希望允许他们能够单击搜索输入字段旁边的开始按钮。问题是,如果他们尝试单击 go 按钮,则输入会模糊然后隐藏,并且永远不会触发提交单击(我无法在单击此元素时取消绑定模糊事件,因为它从未被触发 - 首先触发模糊)

那么有没有办法执行绑定到模糊事件的函数(隐藏 div)除非这个“go”元素是使用 jQuery 或 JavaScript 点击的?

【问题讨论】:

    标签: javascript jquery onblur


    【解决方案1】:

    您有多种选择:

    1. 只有当焦点移到容器外的某个地方时,才能在模糊时隐藏输入,因此如果焦点移到“开始”按钮,则根本不会隐藏输入。

    2. 您可以设计代码并将搜索问题作为 ajax 调用而不是表单提交来触发。

    3. 您可以在简短的 setTimeout() 之后隐藏模糊输入,这使表单提交有机会在隐藏之前发送。

    【讨论】:

    • 您好,感谢您提供这些提示...我使用了第三个选项,并在模糊事件中设置了一个短暂的超时,以让点击通过。
    【解决方案2】:

    不要将 blur 事件放在输入上,而是将 blur 事件放在同时包含输入和 Go 按钮的容器上。

    【讨论】:

    • 感谢您的帮助,但由于某种原因,我无法像输入一样在容器 div 上触发 blur 事件
    猜你喜欢
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2021-02-04
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多