最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to trigger 'contenteditable' element into edit state using js? - Stack Overflow

programmeradmin0浏览0评论

I want to implement element in-placing edit using 'contenteditable' attribute. Is it possible to go into the edit state with mouse event simulation instead of user click?

function triggerEvent(element, eventType) {
    let rect = element.getBoundingClientRect();
  console.log(rect);

    let event = new MouseEvent(eventType, {
    clientX: rect.left + 20,
    clientY: rect.top + 10,
    view: window,
    buttons: 1,
    bubbles: true,
  });
  element.dispatchEvent(event);
}

document.getElementById('btn').addEventListener('click', (event) => {
    let editArea = document.getElementById('edit-area');
  editArea.setAttribute('contenteditable', true);

  triggerEvent(editArea, 'mousedown');
});

DEMO: /

I want to implement element in-placing edit using 'contenteditable' attribute. Is it possible to go into the edit state with mouse event simulation instead of user click?

function triggerEvent(element, eventType) {
    let rect = element.getBoundingClientRect();
  console.log(rect);

    let event = new MouseEvent(eventType, {
    clientX: rect.left + 20,
    clientY: rect.top + 10,
    view: window,
    buttons: 1,
    bubbles: true,
  });
  element.dispatchEvent(event);
}

document.getElementById('btn').addEventListener('click', (event) => {
    let editArea = document.getElementById('edit-area');
  editArea.setAttribute('contenteditable', true);

  triggerEvent(editArea, 'mousedown');
});

DEMO: https://jsfiddle/lfree/vkeq9fza/1/

Share Improve this question asked Jan 21, 2017 at 7:21 lfreelfree 2,2364 gold badges27 silver badges40 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

You just need to focus the div:

let div = document.querySelector('div');

div.focus();
<div contenteditable="true">Div Content</div>

If I understand correctly, all you're trying to do is set focus to the element. Because you've already enabled contenteditable, the following should be adequate:

editArea.setAttribute('contenteditable', true);
editArea.focus(); // Focus on the input which will activate editing
发布评论

评论列表(0)

  1. 暂无评论