Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2009, 10:14
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

Функция autocomplete и зависимое поле
За основу autocomplete используется пример
http://jquery.bassistance.de/autocomplete/demo/
Есть два поля
  1. раскрывающийся список - поставщики
  2. текстовое поле - контакты
Соответственно второе зависит от первого.
Суть задачи: при выборе поставщика и вводе в поле контакта текста происходила фильтрация по данному поставщику.
в раскрывающемся списке value у option это идентификаторы поставщиков
т.е.

Код:
...
<option value='1'>Поставщик 1</option>
<option value='2'>Поставщик 2</option>
<option value='3'>Поставщик 3</option>
...
есть код
Код:
$().ready(function() {

    $("input").click(function () {
        var first_id = null;
        var id = $(this).attr("id");
        var tableName = $(this).attr("accept");

        first_id = $("#OUIDCOUNTERAGENT option:selected").val();

        $(this).flushCache();

        if(tableName != ""){
            $(this).autocomplete("FilterAutoComplite", {
                delay: 300,
                cacheLength: 10,
                extraParams:{
                    tableName:tableName,
                    id:id,
                    first_id:first_id
                }
            });
        }
    });
});
Проблема возникла после изменения поставщика(т.е. выбора другого значения из списка). Функция как и следовало при onclick вызывается один раз, но когда ввожу значения в поле контакта запрос идет к идентификатору не только текущего поставщика, но и всем что выбирались ранее(видно по логу на сервере). хотя в функцию autocomplete он заходит один раз и идентификатор соответствует тому что нужно. в какую сторону капать?

Последний раз редактировалось kez, 13.05.2009 в 15:01.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2009, 14:45
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

Добавил перед
$(this).autocomplete("FilterAutoComplite", ...
отчистку кэша
$(this).flushCache();
Результат тот же.
Ответить с цитированием
  #3 (permalink)  
Старый 13.05.2009, 15:19
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) что выдает
alert([ableName, id, first_id ]);

2) php-script?
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2009, 15:58
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

выдает правильные параметры.
в том то и дело что при он-клике идет одно обращение и правильно меняет параметры. т.е. как будто jQuery запоминает подписчиков(тех кто опрашивает сервер) и создает новый экземпляр подписчика на каждый онклик. при этом при попытке получить данные срабатывают хаотично все подписчики.
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2009, 15:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Цитата:
cacheLength: 10
Часом не оно?
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2009, 16:02
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

нашел какой то пример
http://skolman.az.pl/jquery/autocomplete.html
но я уверен что он работает некорректно т.к. метод getStockId(в примере) вызывается только один раз.
Ответить с цитированием
  #7 (permalink)  
Старый 13.05.2009, 16:03
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

Сообщение от e1f Посмотреть сообщение
Часом не оно?
нет. кэш мне как раз не нужен по этому установлен в единицу.
нужно что бы при изменении поставщика изменялся и список.
Ответить с цитированием
  #8 (permalink)  
Старый 13.05.2009, 16:05
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

Сообщение от x-yuri Посмотреть сообщение
1) что выдает
alert([ableName, id, first_id ]);

2) php-script?
хоть это и не принципиально
сервер написан на яве.
на клиенте яваскрипт
Ответить с цитированием
  #9 (permalink)  
Старый 13.05.2009, 16:40
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
в том то и дело что при он-клике идет одно обращение и правильно меняет параметры. т.е. как будто jQuery запоминает подписчиков(тех кто опрашивает сервер) и создает новый экземпляр подписчика на каждый онклик. при этом при попытке получить данные срабатывают хаотично все подписчики
одно обращение куда? Какие параметры меняются?

p.s. посмотри в firebug'е, какая информация передается между сервером и клиентом
Ответить с цитированием
  #10 (permalink)  
Старый 13.05.2009, 16:50
kez kez вне форума
Аспирант
Отправить личное сообщение для kez Посмотреть профиль Найти все сообщения от kez
 
Регистрация: 12.05.2009
Сообщений: 73

при клике на поле контакта, которое должно быть заполнено автокомплитом. при клике на поле функция
Код:
$(this).autocomplete("FilterAutoComplite", { ...
вызывается один раз с верными параметрами, на сервер передается куча запросов, включая идентификаторы поставщиков, которые выбирались ранее.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
extraParams в autocomplete be3 jQuery 12 17.04.2014 17:00
плагин autocomplete от jquery Anthony jQuery 0 14.12.2008 22:48