Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > autocomplete - отображение списка по клику на поле


Автор: Наставник 19.8.2014, 09:57
Приветствую, коллеги!

Есть проблема, знаний не хватает на решение.

Код

$("#country").autocomplete("autocomplete.php", {
    delay:2,
    minChars:1,
    matchSubset:1,
    autoFill:true,
    matchContains:1,
    cacheLength:10,
    selectFirst:true,
    formatItem:liFormat,
    maxItemsToShow:10,        
    onItemSelect:selectItem
});




HTML
Код

<input type=”input” id=”country” />



PHP скрипт autocomplete.php возвращает список стран.

Все «типично» для этого расширения, работает как надо, при вводе в поле одной буквы появляется выпадающий список со странами, которые начинаются с введенной буквы.

Вопрос состоит в том, можно ли сделать так, чтобы выпадающий список со странами отображался уже только по КЛИКУ (или переходу) на поле для ввода страны (<input type…>)

Т.е. “грубо говоря” раскрывался список при focus() на input со списком всех стран.


Нашел подобное вопрос и решение тут ->
http://stackoverflow.com/questions/4604216/jquery-ui-autocomplete-minlength0-issue
-> и пример решения
http://jsfiddle.net/karim79/fYVrD/

но, как не игрался c параметром minLength, focus() не получается победить проблему. 


Буду рад совету.

Спасибо!

Автор: Aliance 19.8.2014, 11:50
А где ваш-то код? В решении просто вызывается автокомплит при событии focus у поля.

Автор: Наставник 19.8.2014, 12:17
Цитата(Aliance @ 19.8.2014,  11:50)
А где ваш-то код?

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

Если что-то упустил,
то можно глянуть работу скрипта тут
gcargo.ru/calc/

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



Автор: Aliance 19.8.2014, 14:09
Я думал этот код, который был ДО поиска решения и попыток привести свой код в итоговый. А раз это уже итоговый - то конечно он не будет делать то, чего вам нужно. Ведь из приведеннего вами решения вы не взяли саму его суть
Код

$(input).autocomplete(options).focus(function(){$(this).autocomplete('search', '')})

Автор: Наставник 19.8.2014, 14:48
Aliance, 

суть просто не стал приводить, ибо разными способами пытался вставить этот focus.

На основании, вашего примера, сделал так


Код

$("#country").autocomplete("autocomplete.php", {
    delay:2,
    minChars:1,
    matchSubset:1,
    autoFill:true,
    matchContains:1,
    cacheLength:10,
    selectFirst:true,
    formatItem:liFormat,
    maxItemsToShow:10,        
    onItemSelect:selectItem
}).focus(function(){$(this).autocomplete('search', '')});



"синтаксически" это должно быть валидно, но не работает как надо.
// можно зайти на сайт и убедиться в этом.

Уже думаю просто "тупо" в самом input прописать событие onFocus="jsFunc();" - чтобы выпадал список, но должно быть более грамотное решение же с помощью этого дополнение JQuery?



Автор: Aliance 19.8.2014, 15:31
У вас формат $(selector).autocomplete("url", {}), а в jQuery UI формат $(selector).autocomplete({source: 'url'}). Вы вообще какой автокомплит-то используете? Все говорит о том, что jQuery UI, но формат инициализации у вас странный.

Автор: Наставник 19.8.2014, 16:22
Aliance, 

говорю же, что не "шарю" особо в JQuery, поэтому не могу сам дописать.
Использую JQuery UI autocomplete


П.С.
можно на "ты" - без формальностей

Автор: Aliance 20.8.2014, 07:25
По ссылке что ты дал, у тебя подключается файл http://gcargo.ru/bitrix/templates/GeneralCargoInCalc/js/jquery.autocomplete.js, а это не jQuery UI, это просто плагин.

Соответственно, нужно либо ссылка на документация в этому плагину, чтобы посмотреть, можно ли там сделать так. Либо подключить все же  jQuery UI. В коде там у тебя есть закомментированный блок с правильным автокомплитом UI формата (только там переменную source нужно задать явно), но тогда отвалится автокомплит в городе. Нужно не забыть и его поменять на формат уи-шного.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)