Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определить textarea с выделенным текстом (https://javascript.ru/forum/misc/85455-opredelit-textarea-s-vydelennym-tekstom.html)

javascript_pupil 07.09.2023 11:16

Определить textarea с выделенным текстом
 
В форме есть несколько textarea, необходимо получить id textarea в которой выделен текст. Пока знаний хватило только на это:

<!DOCTYPE html>
<html>
<head>
  <title>Пример</title>
</head>
<body>
  <textarea id="textarea1" name="field1">Выделенный текст в первом поле</textarea>
  <textarea id="textarea2" name="field2">Текст во втором поле</textarea>
  <img src="image.png" alt="Изображение" style="cursor: pointer;" id="image">

  <script>
    function attachEventListenersToTextareas() {
      var textareas = document.getElementsByTagName('textarea');
      
      for (var i = 0; i < textareas.length; i++) {
        textareas[i].addEventListener("mouseup", function() {
          var selectedText = window.getSelection().toString();
          if (selectedText !== "") {
          alert("ID textarea с выделенным текстом: " + this.id);
          }
        });
      }
    }

    attachEventListenersToTextareas();

    document.getElementById("image").addEventListener("click", function() {
      attachEventListenersToTextareas();
    });
  </script>
</body>
</html>


Вопрос: как сделать так, чтобы alert появлялся только при нажатии на картинку? Сейчас он выскакивает сразу после выделения текста.

Заранее спасибо!

Aetae 07.09.2023 14:07

document.activeElement

рони 07.09.2023 18:25

javascript_pupil,
<!DOCTYPE html>
<html>

<head>
    <title>Пример</title>
</head>

<body>
    <textarea id="textarea1" name="field1">Выделенный текст в первом поле</textarea>
    <textarea id="textarea2" name="field2">Текст во втором поле</textarea>
    <img src="image.png" alt="Изображение" style="cursor: pointer;" id="image">
    <script>
        let selection;
        document.onselectionchange = () => {
            selection = document.activeElement;
        };
        document.getElementById("image").addEventListener("click", function() {
            alert(selection?.id)
        });
    </script>
</body>

</html>


Часовой пояс GMT +3, время: 23:39.