我有一个文本域,我正在其中插入内容并将其插入插入符号的位置(感谢Tim Down的答案)。 当用户按下按钮时,它会插入内容。 但是,当按钮被按下时,文本域的焦点丢失了。 如何保持焦点在那里,同时提供插入符号的位置仍然相同? 我考虑使用evt.preventDefault()
和.focusout()
。 如果这样有帮助。
我有一个文本域,我正在其中插入内容并将其插入插入符号的位置(感谢Tim Down的答案)。 当用户按下按钮时,它会插入内容。 但是,当按钮被按下时,文本域的焦点丢失了。 如何保持焦点在那里,同时提供插入符号的位置仍然相同? 我考虑使用evt.preventDefault()
和.focusout()
。 如果这样有帮助。
处理 mousedown 事件而不是 click 事件。在失去另一个元素的焦点前,将处理 mousedown 事件。
在你的 mousedown 事件处理函数中,必须阻止事件默认行为。
e.preventDefault(); // in your mousedown eventhandler
您无法阻止焦点移动到可聚焦元素,并仍允许鼠标点击具有其正常行为(如单击按钮)的操作。如果单击支持焦点的元素,例如按钮,则它将获得键盘焦点。
如果正确执行,可以通过编程方式将焦点放回元素。如果执行不当,则可能破坏页面的可用性。
演示:JSFiddle
.preventDefault()
,完全可以阻止焦点移动到可聚焦元素上:http://jsfiddle.net/Ddffh/103/ 。因为在点击之前已经太晚了,此时焦点已经丢失。你可以通过在自己的演示中按住鼠标一段时间再释放来验证这一点:当你第一次按下鼠标时,焦点会丢失;释放后,点击事件才会触发。 - Han Seoul-Oh<input id="messageBox" autofocus />
<input type="button" id="messageSend" onclick="setFocusToMessageBox()" value="Send" />
Javascript代码:
<script>
function setFocusToMessageBox(){
document.getElementById("messageBox").focus();
}
</script>
尝试在按钮上使用tabindex="-1",也许会起作用。
<input type="text" name="body" id="body" Placeholder="message..">
<input type="submit" value="send" id="sendButton" tabindex="-1">