Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   textarea. Программно вставить текст. (https://javascript.ru/forum/events/81042-textarea-programmno-vstavit-tekst.html)

DDim1000 19.09.2020 16:04

textarea. Программно вставить текст.
 
Здравствуйте!
Подскажите, пожалуйста, почему так не вставляется текст в textarea?:
var textarea = document.querySelectorAll(".sc-pYOiM");      
        textarea .val("Текст, который необходимо вставить");

https://jsfiddle.net/zb8p4w70/1/

рони 19.09.2020 16:05

DDim1000,
потому что нужен элемент в который добавляется текст.

DDim1000 19.09.2020 16:08

Цитата:

Сообщение от рони (Сообщение 529035)
DDim1000,
потому что нужен элемент в который добавляется текст.

Ну, textarea есть же.....

laimas 19.09.2020 16:12

querySelectorAll - возвращает коллекцию, это первое, а второе, это нет у текстового поля свойства val (а такой функции и подавно нет), есть свойство value.

DDim1000 19.09.2020 16:20

Цитата:

Сообщение от laimas (Сообщение 529037)
querySelectorAll - возвращает коллекцию, это первое, а второе, это нет у текстового поля свойства val (а такой функции и подавно нет), есть свойство value.

А как нужно делать?
Так тоже не работает:
var textarea = $(".sc-pYOiM");      
       

        textarea .value("Текст, который необходимо вставить");

рони 19.09.2020 16:24

DDim1000,
:-?
var textarea = document.querySelectorAll(".sc-pYOiM");     
        textarea[0].value = "Текст, который необходимо вставить";

laimas 19.09.2020 16:32

Цитата:

Сообщение от DDim1000
Так тоже не работает

Вы путает jQuery с нативным JS, вот в первой есть функция .val(), поэтому надо

var textarea = $(".sc-pYOiM");
textarea.val("Текст, который необходимо вставить");


А в нативном как показали, правда если поле одно, то ни к чему коллекцию получать, и нужно document.querySelector(".sc-pYOiM")

DDim1000 19.09.2020 18:23

Все получилось!!! Текст вставляется, но, возникла другая проблема..
При щелчке на поле textarea, вставленный программно, текст удаляется.
Почему так происходит?
https://youtu.be/uHkqkzEGqLo

voraa 19.09.2020 18:41

Лучше код тут приведите.
И HTML и Js.

DDim1000 19.09.2020 19:08

Цитата:

Сообщение от voraa (Сообщение 529046)
Лучше код тут приведите.
И HTML и Js.

<div class="sc-ptTHP iyAkBQ"><div class="sc-pIWiK lWZjq"><pre class="sc-pQthR fFrNVt"></pre><textarea placeholder="Написать сообщение..." role="textbox" data-name="input-textarea" class="sc-pYOiM emEhfU"></textarea></div><div data-name="messenger-send-message-icon" class="sc-qOhCc fcjSMW"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="sc-fznZeY gJlwEu"><g fill="none" fill-rule="evenodd" stroke="#46AAE9" stroke-width="1.5"><path d="M1 21.972c8 .391 12-3.276 12-11.002V2.765"></path><path d="M5 10l8-8 8 8"></path></g></svg></div></div>


function SetMessage(m){
           var textarea = document.querySelector("textarea[data-name='input-textarea']");   
         
            textarea.value = m;
            $("div[data-name='messenger-send-message-icon']").click();
 };

laimas 19.09.2020 19:54

Цитата:

Сообщение от DDim1000
send

Видимо отправление формы с последующим ее сбросом, если асинхронная отправка.

DDim1000 19.09.2020 20:37

Цитата:

Сообщение от laimas (Сообщение 529048)
Видимо отправление формы с последующим ее сбросом, если асинхронная отправка.

А как с этим бороться?
Вот еще одно видео, кода текст вставляется программно, он не появляется в DOM, а если текст набирается с клавиатуры или вставляется из буфера обмена, то он появляется ни только в textarea, но и в pre......
https://youtu.be/FLryKsE89xA

laimas 19.09.2020 22:42

Цитата:

Сообщение от DDim1000
А как с этим бороться?

С чем? То что форма после отправления очищается, это нормальное явление, иначе можно по ошибке и дубликат данных на сервер оправить. А мультки с кодом смотреть я не любитель.

DDim1000 19.09.2020 23:07

Я не понимаю, почему при клике на поле, удаляется программно вставленный текст? И почему, когда набираешь текст с клавиатуры, он виден в DOM, а программно вставленный текст не виден в DOM? Еще, набираемый текст с клавиатуры, почему то, дублируется в pre.....

laimas 20.09.2020 05:35

Цитата:

Сообщение от DDim1000
Я не понимаю, почему при клике на поле, удаляется программно вставленный текст?

То есть понятно, что само по себе изменение не произойдет, если его не инициализировать, пусть хоть весь документ общелкают? Следовательно вывод какой - изучить событие $("div[data-name='messenger-send-message-icon']").click();, в обработчике которого либо отправление формы, после чего form.reset(), либо просто очищается текстовое поле. Изучайте свой скрипт.

Почему не отображается в DOM программные изменения - ну так даже и события такого нет, чтобы отследить это, хотя это можно сделать также программно. Это потому, что в Web API есть ограничения связанные с безопасностью.

DDim1000 20.09.2020 09:55

Цитата:

Сообщение от laimas (Сообщение 529052)
То есть понятно, что само по себе изменение не произойдет, если его не инициализировать, пусть хоть весь документ общелкают? Следовательно вывод какой - изучить событие $("div[data-name='messenger-send-message-icon']").click();, в обработчике которого либо отправление формы, после чего form.reset(), либо просто очищается текстовое поле. Изучайте свой скрипт.

Проблема в том, что у мня не доступа скрипту сайта, по этому я не могу посмотреть событие клика.
А можно как-то с имитировать ввод с клавиатуры?

voraa 20.09.2020 11:09

Цитата:

Сообщение от DDim1000
Проблема в том, что у мня не доступа скрипту сайта, по этому я не могу посмотреть событие клика.

В отладчике посмотреть скрипт можно.


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