Seyed Ahmad Mirzaee Ответов: 3

Как получить положение курсора в текстовом поле или текстовой области


привет
<HTML>
<HEAD><TITLE>Selection</TITLE>
<SCRIPT type="text/javascript">
function disp()
{
  var text = document.getElementById("text");
  //var t = text.value.substr(text.selectionStart,text.selectionEnd-text.selectionStart);
  //alert(t+"\nSelectionStart:"+text.selectionStart);
  

}
</SCRIPT>
</HEAD>
<BODY>

<TEXTAREA id="text">Hello, How are You?</TEXTAREA><BR>
<INPUT type="button"  value="Select text and click here"   önclick="disp();"/>
</BODY>
</HTML>



SelectionStart-это не работа в IE, а работа в FireFox.
Пожалуйста, помогите мне

Sandeep Mewara

Не могли бы вы уточнить еще немного?

3 Ответов

Рейтинг:
2

Caleb McElrath

Источник: http://stackoverflow.com/questions/1891444/how-can-i-get-cursor-position-in-a-textarea[^]

для кроссбраузерной совместимости вам нужно будет протестировать несколько возможностей:

1. selectionStart (который вы уже выяснили)
2. выбор (который показан в ссылке выше)

основной код:

var pos = 0;
if("selectionStart" in el) {
   pos = el.selectionStart;
} else if("selection" in document) {
   el.focus();
   var Sel = document.selection.createRange();
   var SelLength = document.selection.createRange().text.length;
   Sel.moveStart("character", -el.value.length);
   pos = Sel.text.length - SelLength;
}
return pos;


Рейтинг:
2

Member 10997688

установите autofocus="автофокус" в текстовом поле. Это будет работать в HTML 5.


Рейтинг:
1

Member 12703167

let cursorIndex = $('#textAreaId')[0].selectionStart;


Richard Deeming

ШЕСТЬ ЛЕТ слишком поздно.

Свойство "selectionStart" не поддерживалось во всех браузерах, когда был опубликован этот вопрос. Но он был включен в Решение 1, которое является гораздо более надежным, чем ваше решение.

И использование jQuery для получения одного элемента по идентификатору, а не с помощью document.getElementById, быть бессмысленным.