为什么触发点击contenteditable不会激活元素并设置光标

时间:2016-04-21 16:37:11

标签: javascript jquery html

我希望contenteditable在游戏模拟点击事件上变得活跃,但是这不会发生 - 元素不会被激活。为什么?我需要将光标放在与用户点击完全相同的位置,这就是我使用click事件的原因,因为它包含坐标。

我已经创建了this简单设置来演示问题(在contenteditable div中单击):

HTML

<div contenteditable="true" style="width: 100px; height: 100px; border: 1px solid black;">some text</div>

JS

$(function() {
    var editable = $('[contenteditable]');
    var event, initial = true;
    editable.on('click', function(e) {
        event = e;
        console.log('writing event', event);

        if (initial) {
            initial = false;
            editable.blur();
            setTimeout(function() {
                console.log('trigger click');
                editable.trigger(e);
            }, 3000);
        }
    });
});

1 个答案:

答案 0 :(得分:1)

我相信您正在寻找触发focus事件,该事件会将光标放在框中并允许您编辑内容,而无需实际点击div内部。那是你想要做的吗?

&#13;
&#13;
$(function() {
  var editable = $('[contenteditable]');
  setTimeout(function() {
    editable.trigger('focus');
  }, 1000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contenteditable="true" style="width: 100px; height: 100px; border: 1px solid black;">some text</div>
&#13;
&#13;
&#13;