Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2010, 14:38
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

поиск текста в диве и фокусировка на нем
Всем привет. див, в нем еще один див, в первом диве есть инпут.
<div id='idname'>
 Введите слово  <input type="text" name="input_name">
       <div id="idname2">
        текст1
        супертекст
        новыйтекст
        классный текст
        неповторимый текст
        любой текст
        прикольный текст
       </div>
</div>

итак: див с id= idname2 имеет фиксированную высоту со скролом

задача при вводе слова (точнее беквы) скрипт должен искать во втором диве слова которые начинаются на такие же сиволы как мы вводим в ипут, и при этом фокус должен ложится на найденное слово(или селект,я хз).

допустим я кейапом поймаю нажатие клавиши, и узнаю какая буква ввелась. Каким образом мне поискать во всем диве слова который начинаются на букву которую я ввел, если я ввел вторую букву, например "ПР" то должен зафокусироватся "прикольный текст" и тд.

Есть какие-то функции которые так могут, мне кажется тут еще без регулярки не обойтись. Помогите плиз.
ЗЫ. findText не катит
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2010, 21:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,512

Сообщение от Suharik
Есть какие-то функции которые так могут
Есть такие функции!
http://javascript.ru/String/indexOf
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2010, 12:06
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

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"

Последний раз редактировалось Suharik, 01.12.2010 в 12:28.
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2010, 12:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,512

Сообщение от Suharik
indexOf не катит
Чем же он у тебя провинился?
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2010, 12:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,512

Сообщение от Suharik
id=1
ИД должно начинаться хотябы с одной буквы...
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2010, 12:27
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

честно говоря, я не знаю как реализовать это с indexOf как я понимаю для этого нужно собрать весь текст в одну переменную str и потом только искать в нем через indexOf. Допустим я там смогу найти, но как потом это все найти в тексте всех дивов?. Это как то неправильно.
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2010, 12:28
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Сообщение от ksa Посмотреть сообщение
ИД должно начинаться хотябы с одной буквы...
ух, точно)
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2010, 13:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,512

Сообщение от Suharik
но как потом это все найти в тексте всех дивов?
А как сейчас ты ищешь во всех ДИВах сразу? Просто берёшь все потроха дива с ИД='searchBlock' и ищешь...

Регулярные выражения такэе применяются к строке. Т.ч. ничего другого в поиске ты и не сделаешь... Все будет сводиться к анализу некой строки.
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2010, 13:16
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от ksa
http://javascript.ru/String/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>
Ответить с цитированием
  #10 (permalink)  
Старый 01.12.2010, 13:48
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

Поиск текста я сделал на JQ.
monolithed,
Если в Вашем примере сделатьдополнительный див, в который помстить остальныйе дивы с текстом, задать ему фикс высоту и сделать скролинг этого дива., то при поиске слова, оно будет выделятся красным и зачеркиватся, но скрол не будет прокручиватся. Эта самая главная проблема что у меня не получается.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста в блоке со скроллингом lukingnu Элементы интерфейса 0 05.08.2010 21:54
Поиск текста в исходном коде Avalanche Firefox/Mozilla 6 09.07.2010 17:31
Поиск текста на странице derwish Opera, Safari и др. 5 25.09.2009 12:13
Проверка текста на наличие в нем букв zoibana Общие вопросы Javascript 1 03.02.2009 14:48
Поиск текста и замена krestiyaninov Общие вопросы Javascript 1 07.05.2008 12:30