поиск текста в диве и фокусировка на нем
Всем привет. див, в нем еще один див, в первом диве есть инпут.
<div id='idname'>
Введите слово <input type="text" name="input_name">
<div id="idname2">
текст1
супертекст
новыйтекст
классный текст
неповторимый текст
любой текст
прикольный текст
</div>
</div>
итак: див с id= idname2 имеет фиксированную высоту со скролом задача при вводе слова (точнее беквы) скрипт должен искать во втором диве слова которые начинаются на такие же сиволы как мы вводим в ипут, и при этом фокус должен ложится на найденное слово(или селект,я хз). допустим я кейапом поймаю нажатие клавиши, и узнаю какая буква ввелась. Каким образом мне поискать во всем диве слова который начинаются на букву которую я ввел, если я ввел вторую букву, например "ПР" то должен зафокусироватся "прикольный текст" и тд. Есть какие-то функции которые так могут, мне кажется тут еще без регулярки не обойтись. Помогите плиз. ЗЫ. findText не катит |
Цитата:
http://javascript.ru/String/indexOf |
indexOf не катит. Напишу что я сделал, и что осталось
<div id='idname'>
Введите слово <input type="text" name="input_name">
<div id='searchBlock' style="height:15px;overflow:auto">
<div id=a1> Первое слово </div>
<div id=a2> Второе слово </div>
<div id=a3> Третье слово </div>
<div id=a4> Четвертое слово </div>
<div id=a5> Пятое слово </div>
<div id=a6> Шестое слово </div>
<div id=a7> Седьмое слово </div>
<div id=a8> Восьмое слово </div>
</div>
<div>
var backvar="";
$('#idname :text').keyup(function (){
$("#searchBlock div :contains( '"+backvar+"' )").css( {color:"black"} );
var vvod = $('#idname :text').val();
var slovo = $("#searchBlock div :contains ('"+vvod+"')").css({ color:"red" });
backvar = vvod;
});
Див с id='searchBlock' имеет фикс. высоту, и оверфлов авто. тоесть сразу показывается скролл. Вот когда я в инпут ввожу букву, он находит и закрашивает, но скрол естественно не показывает нам строку которая закрасилась (если она вне блока за скролом). Как сделать так: Если мы ввели "Восьмое слово" чтобы скрол прокручивался в низ и показывал нам эту строку "Восьмое слово". 2) Как избавится от чуствительность к регистру для этого параметра ":contains" |
Цитата:
|
Цитата:
|
честно говоря, я не знаю как реализовать это с indexOf как я понимаю для этого нужно собрать весь текст в одну переменную str и потом только искать в нем через indexOf. Допустим я там смогу найти, но как потом это все найти в тексте всех дивов?. Это как то неправильно.
|
Цитата:
|
Цитата:
Регулярные выражения такэе применяются к строке. Т.ч. ничего другого в поиске ты и не сделаешь... Все будет сводиться к анализу некой строки. ;) |
Цитата:
Все элементарно:
<script type="text/javascript">
window.onload = function(){
document.getElementsByName('input')[0].onkeyup = function(){
var div = document.getElementsByTagName('div'), i = div.length;
while(i--){
if(this.value.charAt(0) == div[i].innerHTML.charAt(0)){
div[i].style.cssText = 'color: red; text-decoration: line-through';
}
}
};
};
</script>
<input type="text" name="input" />
<div>раз</div>
<div>два</div>
<div>три</div>
|
Поиск текста я сделал на JQ.
monolithed, Если в Вашем примере сделатьдополнительный див, в который помстить остальныйе дивы с текстом, задать ему фикс высоту и сделать скролинг этого дива., то при поиске слова, оно будет выделятся красным и зачеркиватся, но скрол не будет прокручиватся. Эта самая главная проблема что у меня не получается. |
| Часовой пояс GMT +3, время: 20:09. |