Как поставить курсор в конец текста (Javascript) ?

Есть html элемент:
<div contenteditable="true" class="test">Некоторый текст</div>

Пользователь может набирать туда текст, на таймере висит JS код, который в процессе печати заменяет некоторые символы введенные пользователям. Проблема в том, что после каждой замены курсор ввода текста ставиться спереди текста и приходиться его вручную переставлять в конец.
Код JavaScript:
var list = document.getElementsByClassName('test'); 

function msgUpd(){
	for(i=0;i<list.length;i++){
		var rep = list[i].innerText.replace('Заменяемый текст','Замена');
		if(list[i].innerText != rep){
			list[i].innerText = rep;
			console.log('Replaced');
		}		
	}
}

setInterval(msgUpd,500);


Как передвинуть курсор в конец текста средствами JavaScript, при условии, что в html менять что-то нельзя(html на чужом сайте, а это расширение для сайта)?
  • Вопрос задан
  • 19649 просмотров
Пригласить эксперта
Ответы на вопрос 4
ghaiklor
@ghaiklor
NodeJS TechLead
Для ленивых лишь брошу код qwer сюда :)
var input = document.querySelector("input");
input.focus();
input.selectionStart = input.value.length;

И да, этот код работает только с input'ом и другими элементами ввода.

В вашем же случае придется это заменять на input, т.к. contenteditable - это чуточку другое и у него своя атмосфера )
Ответ написан
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Насколько я знаю, курсор ставится с помощью установки выделения с нулевой длиной. Т.е. ищите как выделить часть текста в поле ввода.
Ответ написан
Комментировать
Собственно, вот.
Ответ написан
Комментировать
@personaljs
сделайте на событие изменения инпута и вам не надо будет заморачиваться и все будет заменяться в процессе ввода а не по таймауту Пример
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы