我有一个包含一个子框输入type=number
的"parent div“。当用户在输入框之外单击时,我使用父div的blur
或focusout
事件在其他地方使用输入值。
我还需要在某些地方使用$('inputbox').trigger('focus')
,它会意外地触发"parent div“的blur事件,并在该事件上运行代码。
请提供一个解决方案,以停止对子元素焦点的此父模糊事件,或者提供一种方法来确定焦点是通过子元素上的触发器(‘focus’)还是通过用户在父div外部单击来创建的。
我只需要在用户单击父模糊时触发它&而不是当焦点通过代码触发时。
发布于 2016-01-19 06:39:10
使用jquery,您可以非常容易地创建自定义事件,例如:
$('inputbox').trigger('special-focus');
然后,您可以像等待任何其他事件一样等待此事件:
$('div').on('special-focus' , function(){ ... } );
这将防止您的事件干扰内置事件。
我猜如果你不想使用这个建议,那就在你的点击处理程序或孩子的焦点处理程序中这样做
.on('focus' , function(e){
e.stopPropagation();
e.preventDefault();
/// the rest of your code ...
});
这将停止将事件传播到父元素
发布于 2018-12-06 15:28:22
这对我来说是完美的:
if (e.relatedTarget === null) ...
发布于 2016-08-16 17:50:49
对我来说起作用的是检查处理函数中eventObject
对象的relatedTarget
属性。
$("#parentDiv").focusout(function (eventObject) {
if (eventObject.relatedTarget.id === "childInputId")
/// childInput is getting focus
else
/// childInput is not getting focus
});
https://stackoverflow.com/questions/34870012
复制相似问题