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 に答える