更改自动完成小部件的来源

时间:2011-06-01 17:33:51

标签: javascript jquery jquery-ui jquery-autocomplete

我有一个jquery自动完成小部件的奇怪问题。 首先,我有一个'select'HTML元素,显示所有项目。 我还有一个输入元素,我可以在其中搜索与所选项目相对应的问卷。

所以我有这段代码: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);
});

所以我不明白。这是一个错误吗?

编辑:我无法通过jsfiddle向您展示'F5刷新'。如果要测试它,则必须复制代码并在导航器中使用它。

1 个答案:

答案 0 :(得分:0)

我还没有测试过您的代码,但从外观来看,这是一个时间问题。我在Javascript中遇到过这种情况几次。要解决此问题,请尝试使用0ms的setTimeout:

而不是

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

尝试:

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

让我知道这是怎么回事。