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

时间:2014-05-28 13:15:59

标签: javascript focus

我使用普通的JavaScript(没有JQuery等)来显示半模式对话框,其中包含一个小的FORM 我现在设置的方式,如果用户点击页面的不同部分,同一个处理程序将显示不同的对话框,但如果用户单击对话框中的INPUT字段,则单击传播/冒泡直到处理程序,并且INPUT失去焦点 - 输入它的唯一方法是将TAB输入它,这不是完全理想的!

有关如何避免这种情况的任何建议吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

如果您需要支持不具有addEventListenerstopPropagation的旧版IE(IE8及更早版本),see this other answer用于跨浏览器事件连接功能(它也提供stopPropagation

答案 1 :(得分:-4)

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