поиск текста в диве и фокусировка на нем
Всем привет. див, в нем еще один див, в первом диве есть инпут.
<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, время: 16:15. |