Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Помощь по JQuery Autocomplete (https://javascript.ru/forum/jquery/34490-pomoshh-po-jquery-autocomplete.html)

troi88 07.01.2013 11:09

Помощь по JQuery Autocomplete
 
Вложений: 1
Час добрый форумчане. Помогите пожалуйста разобраться с автозаполнением поля. Возникла такая проблема и решил обратиться к Вам как к специалистам, хорошо разбирающимся в данной области. Суть вот в чем. Вот есть пример реализации автозаполнения поля город http://www.instantcms.ru/blogs/lunyi...-profilja.html. Как сделать на основе этого варианта, чтобы поле профессия работало по такому же прицепу? Т.е. на странице регистрации имеются несколько полей, из них поле "город" и поле "профессия" должны обладать функцией автозаполнения по примеру выше. Помогите пожалуйста! Заранее премного благодарен!!!
P.S. И, кстати, я могу сам заменить список городов профессиями, чтобы Вам было меньше мороки. Только покажите как это должно выглядеть.

rockerror 10.01.2013 14:18

Если вы хотите, чтобы кто-то сделал это за вас, то вам нужно в раздел "работа". Если же вы хотите разобраться, то в целом весь процесс будет выглядеть как-то так:
1. при заполнении нужного вам инпута (например, когда юзер ввел 3 символа) делается ajax запрос с введенными символами к серверу.
2. серверная часть обращается к вашему списку профессий (уж не знаю где он у вас будет лежать в массиве или в базе данных) и ищет в нем совпадения с введенными символами.
3. Результаты поиска отправляются ответом на ajax запрос и выводятся (например, ниже как подсказки) там где вам это нужно.

Вот вам 3 достаточно простых шага, с помощью которых вы можете реализовать то, что вам нужно с любыми сущностями (города, профессии и т.д.) и без всяких плагинов. Как работает ajax вы можете посмотреть вот тут. Серверная часть легко описывается одним методом или функцией, в зависимости от того, какой стиль вы предпочитаете.

rockerror 10.01.2013 14:24

Думаю, что автор примера, на который вы сослались выше просто обязан как можно скорее убиться об стену за кашу из html, php и js.

troi88 11.01.2013 13:14

Процесс работы мне понятен. Я реализовал указанный пример на странице регистрации. Работает. Теперь мне необходимо добавить функцию автозаполнения к полю профессия. Список профессий хранится в базе данных. Поле профессия имеет id="proff". Нужна переделать файл php, который делает запрос к базе данных и возвращает ответ. Например:
<?php
define('PATH', dirname(__FILE__));
define("VALID_CMS", 1);

include(PATH.'/core/cms.php');

$inCore = cmsCore::getInstance();
$inDB = cmsDatabase::getInstance();

$city = $inCore->request('query', 'str');
if(!$city)exit;

//Идентификатор главной страны
$id_main_country = 1;

$sql = "SELECT s.id_city, s.id_region, s.id_country, s.city_name_ru, r.region_name_ru, c.country_name_ru, COUNT( p.id ) AS popule
FROM cms_geo_cities s
LEFT JOIN cms_user_profiles p ON s.city_name_ru = p.city
LEFT JOIN cms_geo_countries c ON s.id_country = c.id_country
LEFT JOIN cms_geo_regions r ON s.id_region = r.id_region
WHERE city_name_ru LIKE '{$city}%'
GROUP BY s.city_name_ru
ORDER BY popule DESC , s.city_name_ru ASC";
$res = $inDB->query($sql);
if ($inDB->num_rows($res)) {
while($ress = $inDB->fetch_assoc($res)){
$suggestions[] = ($ress['popule'] > 10 ? '<b>' : '').$ress['city_name_ru'].($ress['popule'] > 10 ? '</b>' : '').' <i> \ '.$ress['region_name_ru'].($ress['id_country']==$id_main_country ? '' : '<span> \ '.$ress['country_name_ru'].'</span>').'</i>';
$data[] = array('city' => $ress['city_name_ru'], 'id_city' => $ress['id_city'], 'id_region' => $ress['id_region'], 'id_country' => $ress['id_country']);
}
}
cmsCore::jsonOutput(array('query' => $city, 'suggestions' => $suggestions, 'data' => $data));

это обработчик поля город. А как сделать выборку по таблице proff, в которой хранится список профессий?


Часовой пояс GMT +3, время: 15:11.