0

我正在使用以下代码:

$(function(){
        $(".aucomplete").live("keyup", function(){
            var all_analysts = [<TMPL_VAR ALL_TARGETS>];
            $(this).autocomplete({
                    source: all_analysts, //local lookup values
                    delay: 0
            });
        });
    });

并且“ALL_TARGETS”包含一个字符串,例如:'X'、'Y'、'Z'。

将字符串限制为 1000 个项目时,一切正常。将字符串限制为 5000 个项目时,aucomplete 不起作用,并且在 chrome 上我收到以下错误:“Uncaught SyntaxError: Unexpected string”(在“var all_analysts = [];”行下)。

(firefox 和 Iexplorer 不显示错误,但 aucomplete 仍然不起作用)。

有谁知道可能是什么问题?

提前致谢。

4

2 回答 2

1

我认为您的问题出在自动完成的源属性上,在 jquery 自动完成中,源不是它将在内部搜索的列表,而是服务器的路径,它将使用包含结果的 json 列表进行响应,因此在您的情况下它应该看起来和这个相似

$(function(){
    $(".aucomplete").each( function(){
        var all_analysts_path = /path/to_your/server_side_method_or_controller;
        $(this).autocomplete({
                source: all_analysts_path, //local lookup values
                delay: 0
        });
    });
});
于 2012-10-21T08:55:57.280 回答
1

一种解决方法是使用远程功能绕过任何限制

$(function(){
        $(".aucomplete").live("keyup", function(){
            var all_analysts = [<TMPL_VAR ALL_TARGETS>];
            $(this).autocomplete({
            minLength: 2,
            source: function( request, response ) {
                var term = request.term;
                if ( term in cache ) {
                    response( cache[ term ] );
                    return;
                }
                //Return part of your big array
                $.getJSON( "search.php", request, function( data, status, xhr ) {
                    cache[ term ] = data;
                    response( data );
                });
            },
            delay: 0
            });
        });
    });

检查 JQueryUI 文档,有几个远程功能http://jqueryui.com/autocomplete/#remote-with-cache

于 2012-10-21T09:09:18.357 回答