2012-07-13 191 views
9

我在<div>上使用contenteditable属性,以使其充当文本字段按需(用于重命名某些内容)。但我也想在其上启用autofocus,以便用户可以立即开始输入(最初启用<div>始终启用contenteditable)。我可以在contenteditable元素上使用自动对焦吗?

这是否有效和/或可能?或者我将不得不切换到标准文本输入?

回答

10

我认为你必须在大多数浏览器中用JavaScript来完成。它不适用于iOS,它只允许在真正用户交互的事件处理程序(例如click或触摸相关事件)中编程使用focus()

另外,请注意,如果页面上还有其他输入,用户可能会在文档完全加载之前关注其中的一个,在这种情况下,用户很难发现焦点在load事件触发时已从其下移开,因此您应该使用输入的focus事件来跟踪此事件。

<div contenteditable="true" id="editable"></div> 

<script type="text/javascript"> 
    window.onload = function() { 
     document.getElementById("editable").focus(); 
    }; 
</script> 
+2

如果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

+0

实际上,你不需要''onload'''focus'。 – Qwertiy 2017-09-25 17:30:34

1

对于未来的观众:

我想我可能有一个稍微更优雅的解决方案。

$(window).on("load", function() { 
    $("[autofocus]").focus(); 
}); 

所以,一旦在页面加载... BAM jQuery的重点是在元素上与“自动对焦”属性!

你可以玩选择器来得到你想要的。

相关问题