textarea - возможно ли уточнить место клика?
Вот есть текст в textarea.
Сам элемент не в фокусе. Когда пользователь кликает на него курсор появляется на месте клика. Это место может быть в середине текста, в середине слова - где угодно! возможно ли как то узнать куда конкретно кликнул пользователь? |
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;
}
|
спасибо!
|
Поработал с этой функцией, это конечно подходит, но не совсем то.
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>
Если при первом запуске кликнуть в середину текста, то алерты выдадут ничего и весь текст! а как сделать так чтобы координаты определялись текущие, которые получились когда элемент приобрел фокус? Или так нельзя? |
onmouseup, onclick
|
bes,
хаха, странное поведение) действительно работает! Спасибо! |
а хотя вроде бы разобрался.
Элемент еще не получает фокус при onmousedown |
| Часовой пояс GMT +3, время: 06:44. |