Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » HTML, CSS, JavaScript

плагин autocomplete от jquery

Обсуждение темы плагин autocomplete от jquery в разделе HTML, CSS, JavaScript, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Пытаюсь задействовать autocomplete у себя на сайте. Проблема стоит в том, что у меня список динамический. Т.е. изначально одно поле с автоподбором. Потом ...


Закрытая тема
 
Опции темы
Старый 14.12.2008, 22:01   #1
Пытаюсь задействовать autocomplete у себя на сайте.

Проблема стоит в том, что у меня список динамический. Т.е. изначально одно поле с автоподбором. Потом можно добавлять еще n полей. И в каждом необходим один и тот же автоподбор.

Т.к. id у всех разный, я пытался сделать таким образом:
Код:
$(document).ready(function(){
    $('input.styleclass').autocomplete("../script.php", {
        autoFill:true,   minChars:1,  delay:10,  cacheLength:10,
        matchSubset:1, matchContains:1, selectOnly:true, formatItem:liFormat,
        maxItemsToShow:20, onItemSelect:selectItem
    });    
});
Как результат - работает только первое поле.

Потом я попробовал после каждого добавления поля добавлять скрипт с обновляемым счетчиком:

Код:
$(document).ready(function(){
    $('#id1').autocomplete("../script.php", {
        autoFill:true,   minChars:1,  delay:10,  cacheLength:10,
        matchSubset:1, matchContains:1, selectOnly:true, formatItem:liFormat,
        maxItemsToShow:20, onItemSelect:selectItem
    });    
});
В этом случае в файрфоксе все работает отлично, но не работает в IE.
Почему такое может происходить?

На сайте http://www.linkexchanger.su/ пытался найти ответ, но все не то.
Гугл тоже молчит. Событие click() тоже пытался задействовать
 
Старый 14.12.2008, 22:01
Ссылки
Старый 15.12.2008, 11:08   #2
Anthony, насколько я понял, у тебя поля добавляются динамически. То есть изначально у тебя в документе только одно поле. Потом (например при нажатии на некую кнопку) у тебя добавляются ещё.

Если я правильно понял, то всё, что ты делаешь - эдакий бредятник...

Функция $.ready теоритически вызывается лишь 1 раз, сразу после загрузки объектной модели документа. в этой функции ты (в первом случае) ставишь autocomplete на все объекты в документе, имеющие некий класс, а у тебя на момент загрузки есть только 1 такой объект - первое поле.

Во втором случае, если опять-же поля добавляются динамически... Я вообще непонимаю, как оно работает в FF.

То есть в случае динамического создания полей, ты дорлжен инициировать autocomplete после добавления каждого поля.

В случае, если таки у тебя статический набор полей, но 1-й варианет у тебя не работает, то вполне вероятно, что autocomplete попросту написан криво, и его можно инициировать лишь коллекцией из 1-го элемента.
тогда вместо.

Код:
$('input.styleclass').autocomplete(...
пишем

Код:
$('input.styleclass').each(function() 
{
    $(this).autocomplete(...
 
Старый 15.12.2008, 11:46   #3
Makarenya,
Цитата:
Сообщение от Makarenya Посмотреть сообщение
Anthony, насколько я понял, у тебя поля добавляются динамически. То есть изначально у тебя в документе только одно поле. Потом (например при нажатии на некую кнопку) у тебя добавляются ещё.
Совершенно верно
Цитата:
Если я правильно понял, то всё, что ты делаешь - эдакий бредятник...
Возможно Поэтому я и обратился на форум.
Цитата:
Функция $.ready теоритически вызывается лишь 1 раз, сразу после загрузки объектной модели документа. в этой функции ты (в первом случае) ставишь autocomplete на все объекты в документе, имеющие некий класс, а у тебя на момент загрузки есть только 1 такой объект - первое поле.
Во втором случае, если опять-же поля добавляются динамически... Я вообще непонимаю, как оно работает в FF.
Факт есть факт - в FF работает. Согласен что бред написал касаемо ready.
Цитата:
То есть в случае динамического создания полей, ты дорлжен инициировать autocomplete после добавления каждого поля.
Я добавлял скрипт с ready.autocomplate после каждого добавления поля.
Цитата:
Код:
$('input.styleclass').each(function() 
{
    $(this).autocomplete(...
Я так понял что это сработает только для статичных полей. Для динамичных я попробовал, но не работает так вообще ни для FF ни для IE. А как быть тогда с динамичными, ведь тот метод с добавлением инициализации автокоплейта после каждого поля был сделан.
 
Старый 15.12.2008, 12:06   #4
А вот с динамическими делаем так!
напимер у нас есть некая кнопка например с id="addbutton", неважно. раз ты както поля добавляешь, значит и кнопку както видишь.
и добавление у тебя происходит например так
Код:
$('#addbutton').click(function()
{
    $('#fildscontainer').append('<input ... />');
}
тогда слегонца меняем нашу запись, получая

Код:
$('#addbutton').click(function()
{
    var inp = $('<input ... />').appendTo('#fildscontainer');
    inp.autocomplete(...);
}
То есть установка autocomplete должна находиться не в document.ready (что бредняк) а прямо в функции добавления нового поля.
 
Этот пользователь сказал спасибо Асмодиан за это полезное сообщение:
Anthony (15.12.2008)
Старый 15.12.2008, 12:52   #5
Makarenya, спасибо...
пробую воспроизвести данный код

Добавлено через 30 минут

блин, не работает.
Вот что я написал:
Код HTML:
<div id="LL"><input id="id_num" type="hidden" value="0"></div>
<a id="button_add" href="javascript:">Add</a>
Код:
$('#button_add').click(function(a){
    
    num = $("#id_num").val();
    num++;    
    $("#id_num").val(num);
    
    newDiv  = '<div id="LL' + num + '">';
    newDiv += '<input class="someclass" type="text" id="field' + num + '"/></div>';
    
    var inp = $(newDiv).appendTo('#LL');

    inp.autocomplete("../script.php", {
        autoFill:true,  minChars:1, delay:10, cacheLength:10, matchSubset:1,
        matchContains:1, selectOnly:true, formatItem:liFormat,
        maxItemsToShow:20, onItemSelect:selectItem
    });
});
В id_num храним значение номера текущего поля. Поля добавляются, но автоподбор так и не работает. Даж не знаю куда копнуть.

Последний раз редактировалось Anthony; 15.12.2008 в 12:55.. Причина: Добавлено сообщение
 
Старый 15.12.2008, 13:34   #6
Эх, дерёвня
смотри, ты совсем не вникаешь в связь между переменными и объектами.
В примере, который написал я, переменная inp связанны с объектом input! и всё работает, а вот в твоём случае переменная inp это <div id="LL' + num + '">', и ты пытаешься поставить autocomplete на этот самый div, правда нехорошо...
А должен же ты инизиировать autocomplete как раз на объекте типа input!, в твоём случае это можно сделать несколькими способами.
например:

Код:
    var newInp = $('<input class="someclass" type="text" id="field' + num + '"/>');
    var newDiv  = $('<div id="LL' + num + '"></div>');

    newDiv.append(newInp);
    $('#LL').append(newDiv);

    newInp.autocomplete(...);
а можно подругому

Код:
    var inp = $(newDiv).appendTo('#LL');

    $('#field' + num).autocomplete("../script.php", {
        autoFill:true,  minChars:1, delay:10, cacheLength:10, matchSubset:1,
        matchContains:1, selectOnly:true, formatItem:liFormat,
        maxItemsToShow:20, onItemSelect:selectItem
 
Этот пользователь сказал спасибо Асмодиан за это полезное сообщение:
Anthony (15.12.2008)
Старый 15.12.2008, 14:30   #7
Makarenya, а слона то я не заметил))) связь уловил
Все заработало!! Псиб огромное!
 
Старый 15.12.2008, 14:30
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите что за плагин DeCa HTML, CSS, JavaScript 2 26.01.2011 00:15
Плагин facebook - как получить id ? vitaly-go HTML, CSS, JavaScript 0 26.08.2010 12:42
Плагин фотогалереи ddddd HTML, CSS, JavaScript 5 30.10.2009 08:40
Плагин autocomplete от jquery и AJAX Dobrynin HTML, CSS, JavaScript 2 26.10.2009 11:21
Плагин DirectResize для MODX ddddd ASP, Perl, PHP и MySQL 2 29.09.2009 23:52


Текущее время: 13:31. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум