Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск введенного города в барабане 
V
    Опции темы
zluka
Дата 16.11.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Есть барабан, приблизительно такой:
Код

       ^
  [Atlanta]
  [Albuquerque]
  [Austin]
=[Baltimore]=
  [Boston]
  [Buffalo]
  [Chicago]
  ...etc
       V

При клике на город, барабан подъезжает вверх или вниз, и выбранный город становиться активным (как бы посредине). Там, где сейчас =[Baltimore]=.
Это все работает. Теперь нужно сделать поиск по городам. Чтобы юзер начинал вводить город "Chi" в input, и барабан автоматически подъезжал к найденному городу, то есть в этом случае "Chicago".
Конкретно и нужна сама функция поиска. Как это реализовать?

ЗЫ. У барабана структура такая:
Код

<ul>
  <li><label>Atlanta</label></li>
  <li><label>Albuquerque</label></li>
  <li><label>Austin</label></li>
  <li class="active"><label>Baltimore</label></li>
  <li><label>Boston</label></li>
  <li><label>Buffalo</label></li>
  <li><label>Chicago</label></li>
  ...etc.
</ul>


Спасибо.


--------------------
user posted image
PM MAIL   Вверх
CruorVult
Дата 17.11.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



1)по событию onkeyup, вытянуть текст из инпута
2)пройтись по списку и для каждого елемента выполнять поиск: label.innetHTML.search(input.value);
3)исли вернет true, то выполнить метод-барабанщик (хотя не ясно как он работает, какие параметры ему нужны?)
PM MAIL Skype   Вверх
zluka
Дата 18.11.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Спасибо, именно так и сделал. Но почему-то не так как надо работает ф-я поиска.
Вызов ф-и поиска по нажатию клавиш:
Код

$('.box-holder input.input-text').keyup(function () {              
    city= $(this).val();
            
    findEnteredCity(city, $(this));
});


Сама ф-я поиска:
Код

// Find city
function findEnteredCity(city, this_selector)
{
    ul = this_selector.parent().parent().siblings(".list-holder").children("ul");
    
    var reg_exp = new RegExp(city, 'i'); 
                    
    for(var i = 0; i < ul.find('li').length; i++)
    {
        var current_city = ul.find('li:eq('+i+')').children("label").text();
                
        if(current_city.search(reg_exp) == true)
        {
            alert(current_city);
            break;
        }
    }        
}


А проблема в том, что alert вызывается только 1 раз. Почему? И выводит не правильный город. То есть при вводе "С", в алерте пишет: "Scottsdale".
Прошу помощи.


--------------------
user posted image
PM MAIL   Вверх
zluka
Дата 18.11.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Только, что поменял:
Код

if(current_city.search(reg_exp) == true)

На:
Код

if(current_city.search(reg_exp) == 0)


Начало нормально искать smile 


--------------------
user posted image
PM MAIL   Вверх
CruorVult
Дата 18.11.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Цитата(zluka @  18.11.2010,  14:51 Найти цитируемый пост)
А проблема в том, что alert вызывается только 1 раз


ну так стоит же брейк
Цитата(zluka @  18.11.2010,  14:51 Найти цитируемый пост)
И выводит не правильный город. То есть при вводе "С", в алерте пишет: "Scottsdale".


регулярку подправте, чтобы не во всем слове искало а сначала

или

Цитата(zluka @  18.11.2010,  15:07 Найти цитируемый пост)
if(current_city.search(reg_exp) == 0)


работает, потомучто возвращаемый индекс 0, тоесть совпадение в первой букве

PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.