Замена содержимого в элементе разделения контента

Есть блок:

<div class="editor-content" id="editor-content" contentEditable="true" role="textbox" spellcheck="true"></div>

Как при нажатии клавиши ввода или переходе на новую строку, делать замену стандартного div на <p class="article">?


Ответы (1 шт):

Автор решения: ryzen

Вот так можно, но из-за особенностей задачи при нажатии на ENTER, внутри блока создаются div с br, чтобы избежать этого - лучше использовать input или textarea.

const editor = document.querySelector('#editor-content');

editor.addEventListener('keypress', e => {
  if (e.keyCode === 13 && !editor.textContent) {
    e.preventDefault()
  }

  if (e.keyCode === 13 && editor.textContent) {
    e.preventDefault()
    addElement(editor.textContent, editor);
    editor.innerHTML = '';
  };
});


function addElement(text, ref) {
  const p = document.createElement("p");
  const content = document.createTextNode(text);

  p.classList.add('article');
  p.appendChild(content);

  document.body.insertBefore(p, ref);
};
#editor-content {height: 1rem;width: 100%;border: 1px solid blue;outline: none;}.article {color: red;}
<div class="editor-content" id="editor-content" contentEditable="true" role="textbox" spellcheck="true"></div>

→ Ссылка