Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setSelectionRange() положение курсора в textArea (https://javascript.ru/forum/misc/29821-setselectionrange-polozhenie-kursora-v-textarea.html)

bpystep 12.07.2012 18:29

setSelectionRange() положение курсора в textArea
 
setCaretPosition(textArea, 5);

function setCaretPosition(ctrl, pos) {
	if(ctrl.setSelectionRange) {
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
		//alert(ctrl.setSelectionRange(pos,pos));
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		//alert(range.moveStart('character', pos));
		range.select();
	}
}

Добрый день.
Курсор не ставится в нужную позицию. перемещается в конец поля. в чем ошибка?

p.s. alert'ы выдают undifined

devote 12.07.2012 18:33

Цитата:

Сообщение от bpystep
alert(range.moveStart('character', pos))

а зачем это?
Цитата:

Сообщение от bpystep
 //range.select();

а это зачем закоменчено?

devote 12.07.2012 18:35

<textarea id="textarea">jsdfkjashdkj ahskdj hjaksd hkajsd</textarea>
<script>
setCaretPosition( document.getElementById("textarea"), 5 );
 
function setCaretPosition(ctrl, pos) {
    if(ctrl.setSelectionRange) {
        ctrl.focus();
        ctrl.setSelectionRange(pos,pos);
        //alert(ctrl.setSelectionRange(pos,pos));
    }
    else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        //alert(range.moveStart('character', pos));
        range.select();
    }
}
</script>

bpystep 12.07.2012 18:43

Цитата:

Сообщение от devote (Сообщение 188373)
<textarea id="textarea">jsdfkjashdkj ahskdj hjaksd hkajsd</textarea>

именно так и подразумевалась, думал это очевидно, извиняюсь если не так.

закомментированное исправил, просто не заметил.
не работает.

devote 12.07.2012 18:48

Цитата:

Сообщение от bpystep
не работает.

просто вы что-то делаете не так.. пример что я привел работает с вашей функцией

bpystep 12.07.2012 19:22

Точно, нашел ошибку, вызов функции стоял, после работы с текстом. Переместил в конец и все заработало.


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