@TerritoryOfPeace
Изучаю php

Как обрабатывать хэштеги в contenteditable блоках?

Есть блок:
<div class="hashtag-input" contenteditable="true" id="hashtag-input"></div>


С помощью javascript пытаюсь сделать хэштеги:

var input = document.querySelector('.hashtag-input');
input.addEventListener('keydown', function (event) {
  if (event.key === 'Enter' && !event.shiftKey) {
    document.execCommand('insertHTML', false, '<br>');
    event.preventDefault();
  } else {
    var text = this.textContent;
    var formattedText = text.replace(/[\r\n]+/g, '<br>');
    var highlighted = formattedText.replace(/(#\w+)/g, '<span class="hashtag">$1</span>');
    this.innerHTML = highlighted;
    placeCaretAtEnd(this);
  }
});

function placeCaretAtEnd(el) {
  el.focus();
  if (typeof window.getSelection != "undefined" &&
      typeof document.createRange != "undefined"
  ) {
    var range = document.createRange();
    range.selectNodeContents(el);
    range.collapse(false);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
  } else if (typeof document.body.createTextRange != "undefined") {
    var textRange = document.body.createTextRange();
    textRange.moveToElementText(el);
    textRange.collapse(false);
    textRange.select();
  }
}


Но, почему-то, не могу перевести строку( Как это исправить?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@TerritoryOfPeace Автор вопроса
Изучаю php
Сделать хэштеги уже с помощью PHP.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Софт для автоматизации
Попробуй прописать стили, чтобы переносы строки отображались:
.hashtag-input {
    white-space: pre-wrap;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы