【问题标题】:Autocomplete doesn't work自动完成不起作用
【发布时间】:2012-07-10 18:28:18
【问题描述】:

我对 js 中的自动完成有疑问。下面的代码很适合我:

$(function(){
    $( "#txtAuto" ).autocomplete({
        source: ["Choice1","Choice2"],
        minLength:2     
    });
});

但是当我将其更改为下面的代码进行测试时,它并没有给我选择:

$(function(){
    $( "#txtAuto" ).autocomplete({
        source: function( request, response ){
            $.ajax({
                url: "test.ewd",
                success: function(data){
                    var res=data.match('\\[[^\\]]*]');
                    return ["Choice1", "Choice2"];                       
                }
            });
        },
        minLength:2     
    });
});

谁能告诉我我哪里做错了?

【问题讨论】:

    标签: javascript ajax jquery-ui autocomplete


    【解决方案1】:

    问题的核心是ajax-function是异步的。它不会与您的其他代码同时执行,而是在您的 ajax 请求的响应(可能需要 10-100 毫秒才能完成)可用时执行。

    因此,您不能 return 来自 success 函数的值。相反,您必须将它们传递给response 函数。像这样:

    success: function(data) {
      var res=data.match('\\[[^\\]]*]');
      response(["Choice1", "Choice2"]);
    }
    

    【讨论】:

    • 没问题。我的答案旁边有一个按钮,您可以使用它来“接受”答案。它会向其他人表明这是可行的解决方案。
    猜你喜欢
    • 2015-12-29
    • 2012-11-02
    • 1970-01-01
    • 2015-06-08
    • 2015-05-19
    • 2014-04-28
    相关资源
    最近更新 更多