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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить ключ массива по его значению 
V
    Опции темы
maxipub
  Дата 11.2.2013, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужен сабж.

Есть JS-массив, где ключи - id, а значение - текст. Пользователь в input text вводит текст, по которому нужно выбирать из массива ключи. Это поиск городов. Т.е. юзер вводит начальные буквы, мы ищем все подходящие варианты.

Т.е. по событию, начиная с появления 3-х символов в инпуте, ищем значения. Вопрос в том, как их найти икак получить соответствующие ключи массива?
PM MAIL   Вверх
ksnk
Дата 11.2.2013, 14:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



в Росcии >1000 городов. Я как-то выковыривал информацию о городах+адресах из fias, получил 32к записей о населенных пунктах (за вычетом аулов, дачных поселков и т.д.) и подумал, что эта задача не для юзерского скрипта. В итоге в базе в таблице городов есть еще 3 ключевых поля - первая буква имени, две первые буквы, три первые буквы.
Javascript посылает запрос с этими буквами, база быстренько фильтрует по ключам и выплевывает список с ограничением на 100 результатов, отсортированных по населению. Юзеру проще добить новую букву, чем листать список городов.

Это я про то, что гигантские массивы в Javascript, imho, зло.

А маленькие масивы можно смотреть чем угодно

Код

jQuery.inArray("Абакан", arr)

например.

Это сообщение отредактировал(а) ksnk - 11.2.2013, 17:02


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
maxipub
Дата 11.2.2013, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне "все города России" не нужны. Ок, с таблицами 1-2-3 ясно. Но, предположим, пользователь вводит длинное название города. Ввел уже 4-5 символов...

Как тут быть дальше? Если упереться только в 3 символа и искать по ним, то это будет не красиво, т.к. при введении 4-5 символов будет висеть все тот же список что и для 3. Как тут быть, перебирать вручную из данных 3-ки?

Если будут примеры, просьба на чистом JavaScript, без jQuery.
PM MAIL   Вверх
ksnk
Дата 11.2.2013, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Я обычно выдавал сервером  список по 3-м первым буквам. Он, обычно, не очень большой. Дальнейшая работа с ним шла у клиента.

Мне больше нравится  `bootstrap, typeahead`. Правда там jquery.

А так - любой `javascript autocomplete`.

В принципе, по трем буквам получается достаточно небольшой список, чтобы его можно было отфильтровать уже в php, или дополнительным LIKE условием в запросе. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
maxipub
Дата 12.2.2013, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(ksnk @  11.2.2013,  22:16 Найти цитируемый пост)
javascript autocomplete

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


 




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


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

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