具有selectAll焦点的contenteditable div不能完全正常工作

时间:2015-12-18 10:19:58

标签: javascript jquery html css

我在这样的表中有一些div:

<div contenteditable="true"
     onfocus="document.execCommand('selectAll',false,null)">Something</div>

通过点击它来聚焦div时,一切正常,整个文本都被选中。

问题是我在按标签浏览div时需要相同的行为。实际上,按标签导航只是让我编辑div而不选择文本。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

在元素聚焦后执行命令,而不是聚焦。为了延迟它,你可以use a timeout,这将把回调放在事件队列中,在元素被聚焦后执行它。

您的代码应该是(不使用任何内联脚本,但jQuery标记为问题):

$('div[contenteditable]').on('focus', function() {
  setTimeout(function() {
    document.execCommand('selectAll', false, null)
  }, 0);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div contenteditable>Something</div>
<div contenteditable>Something New</div>