Показать сообщение отдельно
  #13 (permalink)  
Старый 10.03.2018, 14:43
Интересующийся
Отправить личное сообщение для Devil198711 Посмотреть профиль Найти все сообщения от Devil198711
 
Регистрация: 21.04.2016
Сообщений: 21

Сообщение от рони Посмотреть сообщение
Devil198711,
возможно есть проще варианты
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
    window.addEventListener('DOMContentLoaded', function() {
       var myTextArea = document.querySelector('#myTextArea'),
       but = document.querySelector('#but');
       but.addEventListener('click', function() {
       if(!window.getSelection().anchorNode) return;

       var selection = window.getSelection().getRangeAt(0);
            var selectedText = selection.extractContents();
            var tagname = document.createElement('b');
            tagname.appendChild(selectedText);

          if(tagname.textContent.length) {
          selection.insertNode(tagname);
          var range = document.createRange();
          range.setStart(tagname.childNodes[0], tagname.textContent.length);
          range.collapse(true);
          var sel = window.getSelection();
          sel.removeAllRanges();
          sel.addRange(range);
          }
          else   myTextArea.focus()


       });
         });
  </script>
</head>

<body>
 <div  id="myTextArea" style="background: #ccc" contenteditable="true">
 текст <br />ещё текст<br />и ещё
</div>
<br />
<input type="button" value="Вставить тег b" id="but">

</body>
</html>


Спасибо, но проблемы с вставкой тегов я решил уже, единственное что мне никак не поддается это вернуть выделение в прежнее положение при потере фокуса редактора. То есть когда я нажимаю на кнопку вставки ссылки появляется модальное окно с тремя полями форм (урл, текст ссылки, тайтл), и при установке курсора в любое поле редактор теряет фокус и ответственно забывает выделенный текст, вот я и не могу понять как при нажатии кнопки "вставить ссылку" заменить выделенный текст или вставить там где была каретка
Ответить с цитированием