JS - 如何避免通用点击处理程序窃取焦点

问题描述 投票:0回答:2

我使用纯 JavaScript(无 JQuery 等)来显示半模式对话框,其中包含一个小表单。 按照我目前设置的方式,如果用户单击页面的不同部分,相同的处理程序将显示不同的对话框。但是,如果用户单击对话框中的 INPUT 字段,则单击会传播/冒泡到处理程序,并且 INPUT 会失去焦点 - 键入它的唯一方法是按 TAB 键,这并不完全理想!

关于如何避免这种情况有什么建议吗?

javascript focus
2个回答
3
投票

您可以将

click
处理程序附加到对话框的主元素,并在此时停止传播:

theDialogMainElement.addEventListener("click", function(e) {
    e.stopPropagation();
}, false);

这样,在对话框中单击就不会传播到干扰页面上的单击处理程序。

如果您需要支持没有

addEventListener
stopPropagation
的旧版 IE(IE8 及更早版本),请参阅此其他答案以获取跨浏览器事件连接功能(它也提供
stopPropagation
).


-3
投票

您可以在您引用的特定输入元素上调用 .focus() 。 http://www.w3schools.com/jsref/met_html_focus.asp

© www.soinside.com 2019 - 2024. All rights reserved.