2012-06-27 2 views
1

Я использую несколько автозаполненных ящиков на своем сайте. Ящики заполнены динамическими строковыми массивами, поэтому я не использую сервер. Вся информация является локальной. Вот некоторые из моего кода:jQuery Autocomplete не работает должным образом

<script> 
var availableMaps = new Array(); 
var availableLayers = new Array(); 
var availablePlaces = new Array(); 
</script> 

Выше в верхней части моей страницы индекса

<div class="ui-widget"> 
    <label for="mapTags">Search: </label> 
    <input id="mapTags"> 
</div> 

Выше в тело страницы индекса

for(var i = 0; i < mapContainer.length; i++) 
{ 
    availableMaps[i] = mapContainer[i].name; 
} 
$("#mapTags").autocomplete({ 
     source: availableMaps 
}); 

Этот кусок кода находится в функции js, которая работает правильно, когда загружается страница. Он не работает в функции $(document).ready. И я знаю, что массив доступных массивов заполняется строковыми значениями.

Автозаполнение работает немного, потому что, если я вводю букву или слово в поле ввода, я могу нажать стрелку вниз, и элементы появятся в поле так же, как если бы автозаполнение работало. Единственная проблема заключается в том, что я не получаю небольшое раскрывающееся меню со значениями на выбор. Поэтому мне нужно только открыть раскрывающееся меню. Есть ли другой контент под полем ввода, поэтому выпадающее меню может скрываться за другим контентом? Не кажется вероятным. Должен ли я иметь это в функции $(document).ready?

+0

Вы можете воспроизвести проблему в [JSFiddle] (http://www.jsfiddle.net)? –

ответ

1

Да, вы должны поместить $("#mapTags").autocomplete... части внутри $(document).ready функции, чтобы убедиться, JQuery загрузится, иначе $ будет неопределенным, и ваши автозаполнения не будут созданы.

+0

Но не будет ли это просто не работать полностью, если jQuery еще не загружен? Поскольку он работает частично, он просто не дает ниспадающего меню. Считаете ли вы, что это будет частично работать, или просто не работать вообще, если jQuery еще не загружен? Я бы предположил, что это не сработает, если оно еще не загружено. – MikeShiny

+0

Хм, я, возможно, неправильно понял, что вы имели в виду, когда упомянул, что он частично работает. Это звучало для меня, как будто вы только что получили функцию автозаполнения вашего браузера. Возможно, элементы автозаполнения скрыты за другими элементами, и в этом случае вам нужно будет проверить z-индексы. – MrOBrian

0

Для тех, кто по-прежнему заботится, мне пришлось увеличить индекс z примерно до 100000000000. Парень, который написал часть системы передо мной, по-видимому, установил что-то очень очень большое z-индекс. По крайней мере, теперь я знаю, что вы можете иметь г-индекс больше, чем 100.

Mikeshiny

Смежные вопросы