如果其中任何一个子对象获得焦点,则防止触发模糊事件

热情:

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

当我单击编辑图像时,它将类别置于编辑模式,这使我可以更新名称。从下图可以看到,它表明“汤”当前处于编辑模式,其他汤池处于普通视图模式。通过使用“取消/保存”按钮,一切正常,一切正常。(我尝试添加图片,但不允许我,需要更多的爱)

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

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

因此,是否有一种方法可以防止父级div的任何子级获得焦点时触发模糊事件?

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

我只是在没有编译器的情况下编写了代码,所以不确定是否可以使用,但希望您能理解。

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

jbabey:

我以前不得不解决这个问题。我不确定这是否是最好的解决方案,但这是我最终使用的解决方案。

由于点击事件会在模糊之后触发,因此无法(跨浏览器,可靠的)方式来说明哪个元素获得了关注。

但是,将鼠标按下会在模糊之前触发。这意味着您可以在子元素的mousedown中设置一些标志,并在父元素的模糊中询问该标志。

工作示例:http : //jsfiddle.net/L5Cts/

请注意,keydown如果您还想捕捉由键盘引起的模糊,您还必须处理(并检查Tab / Shift-Tab)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在模糊/焦点事件中,如果下一个焦点位于同一父元素中,如何使模糊不触发?

是否有可能获得一个元素的ID,该元素负责使另一个元素失去焦点,内部模糊或聚焦事件

如果两个事件都发生,该如何只触发其中一个事件?

焦点事件被触发时在在div本身被选择一个DIV元件或任何嵌套输入字段 - 角

当删除一个子元素时,我得到一个错误,表明它可能已经在“模糊”事件中被删除了

如何获得一个子数组?

立即获得第一个子元素

是否可以通过指向另一个未释放子对象的指针来获得一个子对象的指针?

VBA如果<其中任何一个> = <值>?

HTML / CSS:菜单内的子菜单。其中一个按钮应触发与主菜单类似的事件

Konvajs:在其中一个子对象上创建一个具有某些约束的可拖动区域

将点击事件从一个子组件传递到另一个子组件

如何知道另一个子组件中一个子组件的事件

如何忽略触摸事件并将其传递给另一个子视图的UIControl对象?

XSLT 如果另一个子元素重复,如何附加一个子元素

我想将一个对象传递给一个子组件。我做了一切,但没有任何效果。(角度)

仅当其中一个孩子获得焦点时,才使用 CSS 更改表单的背景

我将如何按其中一个子值对该表进行排序,以及如何从中获得最佳结果?

我提出了两个验证错误,但如果其中任何一个被触发,它总是给我相同的验证错误输出

如何在firebase函数中的一个子节点上的写触发器上从数据库中读取任何数据?

如何绘制箭头到其中一个子图中?

Prolog - 使用列表列表和其中一个子列表中的元素

猫鼬在子对象中创建一个子对象

当从另一个事件中调用.val()时,防止在输入上触发“ change”事件

jQuery一个事件可防止触发其他事件

如果 Firebase 中的另一个子值匹配,如何获取子值?

如果列表包含另一个子列表的任何字符串,则在熊猫中创建新列

是否有 jquery 事件在焦点离开元素之前或下一个元素获得焦点之前运行?

在 C# 中触发另一个事件时,如何防止一个事件方法完成?