Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   textarea - возможно ли уточнить место клика? (https://javascript.ru/forum/misc/32861-textarea-vozmozhno-li-utochnit-mesto-klika.html)

dmitry111 01.11.2012 17:13

textarea - возможно ли уточнить место клика?
 
Вот есть текст в textarea.
Сам элемент не в фокусе. Когда пользователь кликает на него курсор появляется на месте клика. Это место может быть в середине текста, в середине слова - где угодно! возможно ли как то узнать куда конкретно кликнул пользователь?

Hoshinokoe 01.11.2012 17:27

dmitry111,

Можно узнать текущую позицию курсора в тексте. Подробнее здесь

Как-то так:
function getCaretPos(obj)
{   
  if(obj.selectionStart) return obj.selectionStart;//Gecko
  else if (document.selection)//IE
  {
    var sel = document.selection.createRange();
    var clone = sel.duplicate();
    sel.collapse(true);
    clone.moveToElementText(obj);
    clone.setEndPoint('EndToEnd', sel);
    return clone.text.length;
  }
  
  return 0;
}

dmitry111 01.11.2012 18:56

спасибо!

dmitry111 04.11.2012 15:11

Поработал с этой функцией, это конечно подходит, но не совсем то.

selectionStart определяет место где был курсор!

То есть пользователь поставил курсор - функция показала не текущие координаты, а те которые были


Вот пример:

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>

    <textarea rows="10" cols="45">Узнать координаты курсора</textarea>
    <script>

      var elem = document.getElementsByTagName("textarea")[0];
      elem.onmousedown = function () {
      	
      	var start = elem.value.slice(0, elem.selectionStart);
        var end = elem.value.slice(elem.selectionStart, elem.value.length);
        
        alert(start);
        alert(end);
        
      };



    </script>

  </body>
</html>




Если при первом запуске кликнуть в середину текста, то алерты выдадут ничего и весь текст!

а как сделать так чтобы координаты определялись текущие, которые получились когда элемент приобрел фокус?

Или так нельзя?

bes 04.11.2012 17:02

onmouseup, onclick

dmitry111 04.11.2012 17:04

bes,

хаха, странное поведение)
действительно работает!

Спасибо!

dmitry111 04.11.2012 17:08

а хотя вроде бы разобрался.
Элемент еще не получает фокус при onmousedown


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