Blog. Just Blog

Получение позиции курсора в текстовом поле INPUT

11.07.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Нашел в этих ваших интернетах забавный визуальный эффект для поля ввода логина и пароля. Но, на мой взгляд, он работает не совсем правильно, так как глаза должны следить за позицией курсора в поле ввода, а не за количеством введенных символов.

Пришлось рисовать универсальную кроссбраузерную функцию для получения позиции курсора в поле INPUT, дополнив список уже имеющихся функций похожего назначения. Вот что у меня получилось:
  1. <script type="text/javascript">
  2. function getpos(id) {
  3.     var el=document.getElementById(id);
  4.     var possel;
  5.  
  6.     // Internet Explorer
  7.     if (document.selection) {
  8.         el.focus();
  9.         if (sel=document.selection.createRange()) {
  10.             sel.moveStart('character', -el.value.length);
  11.             pos=sel.text.length;
  12.         }
  13.         // ... something wrong ...
  14.         else {
  15.             pos=0;
  16.         }
  17.     }
  18.     // Mozilla, Chrome
  19.     else if (el.selectionStart || el.selectionStart=='0') {
  20.         if (el.selectionDirection) {
  21.             if (el.selectionDirection=='backward') {
  22.                 pos=el.selectionStart;
  23.             }
  24.             else {
  25.                 pos=el.selectionEnd;
  26.             }
  27.         }
  28.         else {
  29.             // Opera 9
  30.             pos=el.selectionEnd;
  31.         }
  32.     }
  33.     // ... something wrong ...
  34.     else {
  35.         pos=0;
  36.     }
  37.     return parseInt(pos);
  38. }
  39. </script>
Единственный параметр - id поля ввода, на выходе числовое значение позиции курсора. Вызов функции лучше биндить на все возможные обработчики, так или иначе связанные с изменением содержимого поля ввода или с его (де)активацией. В некоторых случаях в старых браузерах может наблюдаться проблема с определением позиции курсора при выделении фрагмента текста, а также при автоповторе нажатия клавиш. В современных браузерах все работает нормально.

Читать статью целиком »
Просмотров: 254 | Комментариев: 1

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2022
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 1 (0.0146 сек.) / Память: 4.75 Mb
Наверх