8

[http://api.jqueryui.com/autocomplete/] で説明されているように、jQuery UI オートコンプリートを使用しています。

検索を実行する前後に、いくつかのことを行う必要があります。上記の URL のドキュメントを読むと、クエリの実行前と実行後にトリガーされる「検索」と「応答」の 2 つのメソッドについて説明されています。しかし、これらをコードに追加すると、「検索」は完全に機能しますが、「応答」は呼び出されません。私は何を間違っていますか?私のコードはすべて機能し、JavaScript エラーはなく、オートコンプリートは完全に機能します。しかし、「応答」メソッドがトリガーされることはありません。

$(function() {
             $("#tv").autocomplete({
                source: "a_url_providing_json",
                minLength: 4,
                select: function(event, ui) {
                    $('#state_id').val(ui.item.id);
                    $('#abbrev').val(ui.item.abbrev);
                },
                search : function(a,b) {
                     alert('this works!');
                },
                response : function(a,b) {
                     alert('this doesnt!');
                } 
        })    
    }); 

アドバイスをありがとう!

4

2 に答える 2

10

このコールバック メソッドは、新しい jquery-ui とともに導入されました。これを機能させることはできませんでしたが、1.8.20から1.9.2に更新した後、想定どおりにコールバックが起動します。

それが役に立てば幸い!

于 2012-11-26T10:28:27.407 に答える
2

すべてのコードが正しいと仮定すると、jQuery UI (および対応する jQuery も) のバージョンをアップグレードする必要がある場合があります。これは、あなたが見ていたドキュメントには「Autocomplete widget version added: 1.8」と書かれていますが、応答イベントが 1.9 まで追加されなかったためです ( jQuery 1.9 Upgrade Guide: Response Eventを参照してください)。ガイドに記載されているように、イベント リスナーを autocompleteresponse イベントにバインドします。

オートコンプリート応答イベントをサポートする jQuery および jQuery UI バージョンにアップグレードすると、このコードは期待どおりに動作します。

このイベントに初めて参加する方へのヒントとして、データを変更する場合は、ソース データが単なる値の配列であっても、追加するアイテムごとに値とラベルの両方のプロパティを含める必要があることに注意してください。これは、コンテンツがこのイベントに入ると、既に「正規化」されている (つまり、ラベルが値と対になっている) ためです。

したがって、返される結果に「その他」を追加する場合、応答イベントは次のようになります。

response: function (e, ui) {
  ui.content.push(
    {label:"Other", value:"Option"}
  );
}

これにより、すべてのリストに「オプション」の入力値を持つ「その他」オプションが追加されます。

于 2013-03-13T16:14:49.963 に答える