По сочетанию клавиш вставить текст из div

127
11 января 2021, 03:30
//Событие на ctrl+space
txt = document.querySelector('textarea#txt');
txt.onkeydown = function(event){
  if(event.ctrlKey && event.which == 32){
    found = somediv.childNodes[0]
    .innerText
    .match(/\.(.+)$/);
    txt.innerHTML = found[1].trim()
}

Если сделать, как написано в коде, то это работает ровно один раз (после того, как текст уже оказался в textarea и нужно, скажем, удалить пару символов, применение ctrl+space перестает работать).

Если концовку сделать не txt.innerHTML = found[1].trim(), а txt.value = found[1].trim() то больше ничего нельзя дописать или удалить. А надо неоднократно использовать это сочетание клавиш и периодически редактировать вставленный текст. В чем тут дело?

P.s somediv.childNodes - множество <p>Какой-то текст...</p>

Answer 1

Для textarea вместо innerHTML нужно использовать value. Иначе действительно 1 раз работает и перестаёт.

Мой пример. Не понял зачем вам trim и match.

txt = document.querySelector('textarea#txt'); 
txt.onkeydown = function(event){ 
  if(event.ctrlKey && event.which == 32){ 
    alert(document.getElementById("somediv").innerText); 
       document.querySelector('textarea#txt').value = document.getElementById("somediv").innerText; 
    } 
}
<div id="somediv"><p>Какой то текст...</p></div> 
<textarea id="txt"></textarea>

Answer 2
txt.innerHTML = found[1].trim()
txt.value = found[1].trim()
READ ALSO
Плавно анимировать появление элемента

Плавно анимировать появление элемента

Вроде бы при подобном коде всё должно изменяться плавно, но подобного, к сожалению, не происходит

91
Сделать обновление кнопки

Сделать обновление кнопки

При нажатии на кнопку фильтр выводится окно сайдбара, где можно выбрать параметры фильтров, задать и отфильтроватьНо при закрытии окна (когда...

104
Блокирование кнопки в форме

Блокирование кнопки в форме

нужно сделать так, чтоб кнопка Save блокировалась, если UserName пустойНо не понимаю как это сделать)

104