我在<div>
上使用contenteditable
属性,以使其充当文本字段按需(用于重命名某些内容)。但我也想在其上启用autofocus
,以便用户可以立即开始输入(最初启用<div>
始终启用contenteditable
)。我可以在contenteditable元素上使用自动对焦吗?
这是否有效和/或可能?或者我将不得不切换到标准文本输入?
我在<div>
上使用contenteditable
属性,以使其充当文本字段按需(用于重命名某些内容)。但我也想在其上启用autofocus
,以便用户可以立即开始输入(最初启用<div>
始终启用contenteditable
)。我可以在contenteditable元素上使用自动对焦吗?
这是否有效和/或可能?或者我将不得不切换到标准文本输入?
我认为你必须在大多数浏览器中用JavaScript来完成。它不适用于iOS,它只允许在真正用户交互的事件处理程序(例如click
或触摸相关事件)中编程使用focus()
。
另外,请注意,如果页面上还有其他输入,用户可能会在文档完全加载之前关注其中的一个,在这种情况下,用户很难发现焦点在load
事件触发时已从其下移开,因此您应该使用输入的focus
事件来跟踪此事件。
<div contenteditable="true" id="editable"></div>
<script type="text/javascript">
window.onload = function() {
document.getElementById("editable").focus();
};
</script>
对于未来的观众:
我想我可能有一个稍微更优雅的解决方案。
$(window).on("load", function() {
$("[autofocus]").focus();
});
所以,一旦在页面加载... BAM jQuery的重点是在元素上与“自动对焦”属性!
你可以玩选择器来得到你想要的。
如果HTML5 autofocus属性开始支持contenteditable元素,那么这可能是一个更好的解决方案。不过目前它只适用于表单元素:https://developer.mozilla.org/en-US/docs/Web/HTML/Forms_in_HTML#The_autofocus_attribute – Loren 2013-07-18 23:42:02
实际上,你不需要''onload'''focus'。 – Qwertiy 2017-09-25 17:30:34