Поиск и замена в текстовом поле
Есть объект текстового поля (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, время: 12:45. |