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

244
19 апреля 2022, 06:50

Есть блок:

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

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

Answer 1

Вот так можно, но из-за особенностей задачи при нажатии на 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>

READ ALSO
validateForm.validate is not a function из-за чего возникает эта ошика?

validateForm.validate is not a function из-за чего возникает эта ошика?

Работаю с YiiПытаюсь подключить плагин validate

177
jquery динамичное изменение типа поля

jquery динамичное изменение типа поля

ЗдраствуйтеМеняю тип поля:

150
НЕ работает mousedown для левой кнопки мыши

НЕ работает mousedown для левой кнопки мыши

Стоит задание: при зажатии мыши над объектом изменить курсор на grabbingПосле отпускания - изменить курсор обратно в стандартное положение

149
Контекст this в bind [дубликат]

Контекст this в bind [дубликат]

В связи со следующим кодом

154