Изменение источника виджета автозаполнения - PullRequest
0 голосов
/ 01 июня 2011

У меня странная проблема с виджетом автозаполнения jquery.Сначала у меня есть HTML-элемент select, который отображает все проекты.У меня также есть элемент ввода, в котором я могу искать анкеты, которые соответствуют выбранному проекту.

Итак, у меня есть этот код: http://jsfiddle.net/AMkKX/1/

Все отлично работает.Но моя проблема заключается в том, что я обновляю страницу (с помощью F5, а не Ctrl + F5): всегда выбирается предыдущий выбор поля выбора, поэтому я хочу изменить источник виджета автозаполнения (код, который я показываю, должен это сделать)

Но источник не изменится, если я не поставлю предупреждение перед $('#search-questionnaire').autocomplete('option', 'source', data);:

$('#search-project').change(function () {
    var data;
    var val = $(this).val();

    alert('val : ' + val);

    if (val != '')
        data = questionnairesData[val];
    else
        data = allQuestionnairesData;

    $('#search-questionnaire').autocomplete('option', 'source', data);
});

Так что я не понимаю.Это ошибка?

РЕДАКТИРОВАТЬ: Я не могу показать вам "F5 обновление" вещь с jsfiddle.Если вы хотите проверить это, вы должны скопировать код и использовать его в вашем навигаторе.

1 Ответ

0 голосов
/ 01 августа 2011

Я не проверял ваш код, но, судя по всему, это проблема синхронизации. Я сталкивался с этим в Javascript пару раз. Чтобы решить эту проблему, попробуйте использовать setTimeout 0ms:

Вместо

$('#search-questionnaire').autocomplete('option', 'source', data);

Попробуйте:

setTimeout(function() {
    $('#search-questionnaire').autocomplete('option', 'source', data);
}, 0)

Дайте мне знать, как это происходит.

...