Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.11.2012, 17:13
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

textarea - возможно ли уточнить место клика?
Вот есть текст в textarea.
Сам элемент не в фокусе. Когда пользователь кликает на него курсор появляется на месте клика. Это место может быть в середине текста, в середине слова - где угодно! возможно ли как то узнать куда конкретно кликнул пользователь?
Ответить с цитированием
  #2 (permalink)  
Старый 01.11.2012, 17:27
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

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;
}

Последний раз редактировалось Hoshinokoe, 01.11.2012 в 17:32.
Ответить с цитированием
  #3 (permalink)  
Старый 01.11.2012, 18:56
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2012, 15:11
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

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

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>




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

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

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

Последний раз редактировалось dmitry111, 04.11.2012 в 15:16.
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2012, 17:02
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

onmouseup, onclick
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2012, 17:04
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

bes,

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

Спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 04.11.2012, 17:08
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск