1

特定の時間にajaxオートコンプリートを呼び出す方法は? ここにこれが私のコードです

function auto(x){


x.autocomplete('ajax/getFriends',{
        max:500,
        width:300,
        minChars:2,
        autoFill: false,

        formatItem: formatItem,
        formatResult: formatResult
        });

        function formatItem(row) {
                return row[0];
                //return row[0] + " (<strong>id: " + row[1] + "</strong>)";
        }
        function formatResult(row) {
            return row[0].replace(/(<.+?>)/gi, '');
        }

         $("#comment").result(function(event, data, formatted) {
            $("#test1").val(data[1]);
            $("#test2").val(data[2]);
         });
    }

しかし、エラー x.autocomplete is not a function と表示されます

私は上記のように呼んでいます

auto("string");

誰でもこれを解決する方法を教えてもらえますか

事前に感謝します私は英語が苦手です。間違いがあればすみません

4

1 に答える 1

0

jQueryオートコンプリートが一緒に機能する方法を混乱させていると思います。文字列にオートコンプリートを添付し、提案用のHTML要素を構築しているようです。これは、オートコンプリート機能が機能する方法ではありません。

やりたいのは、オートコンプリート機能を入力ボックスにアタッチすることです。次に、そこに何かが入力されるたびに、オートコンプリート関数が入力に対して自動的に起動します。それがまさにそれが構築された方法です。

たとえば、HTMLコードにmyAwesomeInputBoxと等しいIDの入力ボックスがあるとします。

<input type="text" id="myAwesomeInputBox"/>

オートコンプリート(ajaxを使用)をこの入力フィールドにバインドするには、Javascriptでこれを実行します。

$("#myAwesomeInputBox").autocomplete({
                source: function( request, response ) {

                        // request.term is the input in the textbox, encode for security reasons
                        var input = encodeURI(request.term); 

                        $.ajax({

                            // your ajax endpoint
                            url: 'ajax/getFriends', 

                            // the request method, modify to your actual method
                            type: 'GET', 

                            // whatever data you want to pass to your endpoint. 
                            // I'm assuming at least the input (with key userInput here) 
                            // and maybe the limit of the elements in the response array 
                            // the server should send back
                            data: {userInput: input, limit: 500}, 

                            // what to do on success (process the response) 
                            success: function(data){ 

                                // assuming your ajax endpoint returns a JSON encoded array with the suggestions as a response
                                var responseArray = $.parseJSON(data);

                                // pass the decoded response array to the jquery defined response method for autocomplete
                                response(responseArray); 
                            }, 

                            // what to do if the server returns an error
                            error: function(jqXHR, textStatus, errorThrown){
                                // pass an empty suggestions array maybe?
                                response(new Array()); 
                            }
                          }, 'json');
                    }
            });

私にとってトリッキーな部分は

response(responseArray); 

しかし、一度調べてみると、かなり理解できます。さらに処理するために、配列をjQueryオートコンプリートハンドラーに渡すだけです。

以前のバージョンのjQueryがajaxオートコンプリートをどのように処理したかはわかりませんが、これがバージョン1.8.0(以降)での処理方法です。

于 2012-12-14T10:28:38.680 に答える