javascript - 如果其任何一个子级获得焦点,则防止触发模糊事件

标签 javascript jquery knockout.js onblur

我在页面上有一个 div,显示有关特定类别(图像、名称等)的一些信息。

当我单击编辑图像时,它会将类别置于编辑模式,这样我就可以更新名称。从下图中可以看出,“Soup”当前处于编辑模式,其他处于正常查看模式。这一切都按预期工作,取消/保存按钮一切正常。 (我尝试添加图像但不让我,需要更多的爱)

但是一旦进入编辑模式,如果我单击页面上的任何其他位置(div 之外),预期结果将是汤类别将返回查看模式。在某种事件触发时,这也应该允许我询问他们是否想要保存更改。

所以我决定做的是在“soups”父 div 上创建一个模糊事件。如果我单击页面上的任何位置,这将按预期工作,但是如果我单击 div 的内部元素,它也会导致触发父级模糊事件,从而导致类别返回到查看模式。

那么,有没有一种方法可以防止父级 div 在其任何一个子级获得焦点时触发模糊事件?

<div tabindex="-1" onblur="alert('outer')">
    <input type="text" value="Soup" />
</div>

我只是在没有编译器的情况下编写了代码,所以不确定这是否有效,但希望你明白了。

我正在使用 Knockout.js 动态更新 GUI,但这不会影响我没想到的答案。

最佳答案

我也遇到了同样的问题。这对我有用。

 handleBlur(event) {
    // if the blur was because of outside focus
    // currentTarget is the parent element, relatedTarget is the clicked element
    if (!event.currentTarget.contains(event.relatedTarget)) {
        .....
    }
}

享受吧:)

关于javascript - 如果其任何一个子级获得焦点,则防止触发模糊事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092261/

相关文章:

javascript - knockout 绑定(bind)到日期选择器

javascript - undefined variable : window in my script?

javascript - 使用代理时如何停止NodeJS "Request"模块更改请求

javascript - 不允许双下划线的正则表达式,除非它在单词的末尾后跟 'x' 符号

离开页面时 JQuery Ajax 错误

jquery - 使用 jQuery 根据父位置在子 li 上设置边距

javascript - 如果指定的域不等于,则当前 URL 应用此 jQuery 以及具有相同域的页面

javascript - Knockout 中的 CSS 绑定(bind)可绑定(bind)两个类,其中一个是动态的,另一个是静态的并进行评估

javascript - 无法输出值: JavaScript

javascript - 如何从 View 模型引用模型类型?