如何在按下按钮时使元素不会失去焦点?

时间:2012-08-28 07:52:31

标签: javascript jquery html focus selection

我有一个textarea,我在插入符号的位置插入内容(感谢Tim Down's answer)。它在用户按下按钮时插入内容。但似乎按下按钮时,文本区域的焦点就会丢失。如何保持焦点在那里,提供插入符的位置也是一样的?我正在考虑将evt.preventDefault().focusout()一起使用。如果这有帮助。

4 个答案:

答案 0 :(得分:10)

您无法停止焦点移动到可聚焦元素,仍然允许鼠标单击以使其具有正常行为(例如click按钮)。如果单击支持焦点的元素(如按钮),它将获得键盘焦点。

如果正确完成,可以以编程方式将焦点放回元素上。如果做得不好,可能会破坏页面的可用性。

演示:http://jsfiddle.net/jfriend00/Ddffh/

答案 1 :(得分:6)

确保您处理mousedown事件。 这将在另一个元素的焦点丢失之前触发。

在mousedown事件处理程序中,您需要返回false,以防止事件传播和默认行为。 (也适用于触摸事件)

return false; // on your mousedown event

http://jsfiddle.net/Ddffh/143/

答案 2 :(得分:0)

按下按钮时必须更新焦点。

HTML code:

<input id="messageBox" autofocus />
<input type="button" id="messageSend" onclick="setFocusToMessageBox()" value="Send" />

Javascript代码:

<script>
function setFocusToMessageBox(){
    document.getElementById("messageBox").focus();
}
</script>

答案 3 :(得分:-1)

您可以通过在按钮单击功能结束时以编程方式将焦点应用于文本区域来轻松完成此操作。这样,您每次都可以重新获得焦点以及点击事件。