Поиск и замена в текстовом поле
Есть объект текстового поля (textarea) и переменная со строкой поиска.
Как осуществить поиск с текущей позиции курсора в текстовом поле до конца? Результатом поиска будет выделение первого найденного входжения строки поиска в текстовом поле... В каком направлении копать? function setFind(h) { var f = prompt("Enter text to search:"); h.selection ... } |
Насколько мне известно, текущую позицию курсора нельзя определить.
|
Цитата:
http://fastcoder.org/articles/?aid=609 Для W3C-браузеров textarea.selectionStart, для IE чуть посложнее, нужно получить TextRange и сдвинуть его левую границу к началу textarea, затем получить textrange.text.length |
Странно. Я раньше вроде спрашивал такое и из ответа понял, что так работает только если есть выделение.:blink:
|
Курсор (каретка) рассматривается, как схлопнутое выделение, то есть его границы совпадают.
|
Цитата:
|
<html> <head> </head> <body> <h1>Только для IE</h1> <textarea id="textarea" rows="5" cols="20">123456789</textarea> <div>Позиция курсора: <span id="position">undefined</span></div> <script type="text/javascript"> var pos = document.getElementById("position"); document.getElementById("textarea").onkeyup = function () { var range1 = document.selection.createRange(); var range2 = range1.duplicate(); range2.moveToElementText(this); range2.setEndPoint("EndToStart", range1); pos.innerHTML = range2.text.length; }; </script> </body> </html> |
да я так, уточнить хотел на предмет другого варианта. Я делал так:
if( window.getSelection ) { return el.selectionStart; } else { var cursor = document.selection.createRange(); var range = el.createTextRange(); range.setEndPoint( 'EndToStart', cursor ); return range.text.length; } |
Разве это работает? Я помню, что созданные разным способом textrange никак не хотели конечные точки друг друга принимать.
|
Цитата:
|
Часовой пояс GMT +3, время: 03:32. |