Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие onselect (https://javascript.ru/forum/events/34701-sobytie-onselect.html)

settype 15.01.2013 16:22

Событие onselect
 
Добрый день.
У меня такой вопрос:
- например есть текст
<textarea>несколько слов</textarea>

можно-ли при выделении слова "слов" (на <textarea> подвешен обработчик события select), получить это слово для дальнейшей обработки(например для отправки его на сервер с помощью AJAX).
Спасибо.

zilker 15.01.2013 16:31

text = window.getSelection().toString() - для нормальных
text = document.selection.createRange().text - для IE

settype 15.01.2013 18:21

alert "выбрасывает" но он пустой.

settype 15.01.2013 18:28

В смысле через alert пытаюсь вывести выделенный фрагмент.

рони 15.01.2013 18:52

settype,
получаем-пользовательское-выделение

zilker 15.01.2013 19:04

alert(window.getSelection().toString())

у вас не выводит?
А вообще рони вам правильную ссылку дал

settype 15.01.2013 19:58

Честно говоря не понимаю, наверное опыта маловато, извините.

Вот код:
<html>
<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>

<form>
  <textarea  onselect='s()'>Время на сайте</textarea>
  <input type='text' value='fdghfh' onclick='s()'/>
  <input type="button" onclick="s()" value="Вывести выделенный фрагмент"/>
</form>
<p onclick='s()'>yiogyotyiotyuo</p>

<script>
/*function s(){
  if(window.getSelection)
     txt = window.getSelection().toString();
  else if(document.getSelection)
    txt = document.getSelection();                
  else if(document.selection)
    txt = document.selection.createRange().text;
 
  return txt;
}*/
function s(){
	if ( window.getSelection ){
		alert(window.getSelection().toString());
	}
	else if ( document.getSelection ) {	
		alert(document.getSelection().toString());
	}
}
 
</script>	

</body>
</html>


Обработчики onclick срабатывают и выводят выделенный фрагмент на <p></p>, но на <textarea> и <input> alert появляется но без фрагмента(как onclick так и onselect).
А меня интересует именно onselect в <textarea> то-есть получить фрагмент при выделении.

Deff 15.01.2013 20:22

<html>
<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>

<form>
  <textarea id="id-0" onmouseup='s(this)'>Время на сайте</textarea>
  <input type="button" onclick="s(document.getElementById('id-0')
)" value="Вывести выделенный фрагмент"/>
</form>


<script>
    function s(a) {
     var b=a.value.substring(a.selectionStart, a.selectionEnd)
    if(b) alert(b)
    }
</script>	

</body>
</html>

settype 15.01.2013 20:41

АБАЛДЕТЬ!!!:)
Да-а-а, +1448 это вам не плюшками баловаться, ЭТО ОПЫТ!
ОГРОМНОЕ СПАСИБО!
А где можно подробнее узнать о
elem.selectionStart, elem.selectionEnd
.
Спасибо.

Sanda 16.01.2013 11:34

Deff,
веселье начинается в IE8 (:


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