3

私は2人の個人を入力する必要があるフォームを設計しています。両方のフィールドはjquery-uiのオートコンプリートによってサポートされています。オートコンプリートの動作は同じです。複数のフォームフィールドに同じオートコンプリートアクションを適用しますか?

実際にフォームに入力環境、両方のフィールドが自動補完候補を取得するための正しいAJAX要求を送信します:ここで

は、私が直面しています問題です。しかし、最初の形式だけが結果リストを正しく出力します。

私が現在使用してセレクタがある:

$(".person_input").autocomplete() 

とセレクタが解決しない変更:

$("#person1,#person2").autocomplete() 

私は、セレクタまたは一部を変更することができますどのような方法があるかどうかを知りたいですオートコンプリートの動作を使用するので、同じ関数を自分のコードに2回書く必要なく、両方のフィールドにオートコンプリートを正しく適用できます。

<input type="text" value="" name="person1" class="person_input" id="person1"> 
<input type="text" value="" name="person2" class="person_input" id="person2"> 

となどautcompleteコード:

$(".person_input").autocomplete({ 
    source: function(request, response) { 
    $.ajax({ 
     url: "/ajax/get_person/", 
     data: {'q':request.term}, 
     dataType: "json", 
     type: "POST", 
     success: function(data){ 
     response(data); 
     }, 
    }); 
    }, 
    focus: function(event, ui) { 
     $(this).val(ui.item.name); 
     return false; 
    }, 
    select: function(event, ui) { 
     $(this).val(ui.item.name); 
     return false; 
    } 
    }).data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.name + "</a>") 
     .appendTo(ul); 
    }; 

答えて

14

反復のDOM除去successニーズ後末尾のカンマを参照 - 見つかった各要素について>

$(".person_input").each(function(){ //grab each element with the class = person_input 

、実行オートコンプリート()

$(this).autocomplete(); 

スコープ内オートコンプリートを変更この機能をすべての形式に適用させる

$(".person_input").each(function(){ 
    $(this).autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: "/ajax/get_person/", 
     data: {'q':request.term}, 
     dataType: "json", 
     type: "POST", 
     success: function(data){ 
      response(data); 
     }//unnecessary trailing comma removed here 
     }); 
    }, 
    focus: function(event, ui) { 
    $(this).val(ui.item.name); 
     return false; 
    }, 
    select: function(event, ui) { 
     $(this).val(ui.item.name); 
     return false; 
    } 
    }).data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append("<a>" + item.name + "</a>") 
    .appendTo(ul); 
    }; 
}); 
+0

この包括的な応答ありがとう! – rickypai

2

は、絶縁するかどうかを確認するために、これを試してみてください

フォームフィールドは、そのように定義されている、事前にありがとう2例:

$(".person_input").each(function(){ 

    $(this).autocomplete(/* options*/); 

}) 

EDIT:IE

+1

ありがとうございます。しかし、私は詳細のために、他のチャプに受け入れなければならないでしょう。 (もし私が2つの受け入れを与えることができたら、私はそうしました!)また、セミコロンを後に追加すると良いでしょう}) – rickypai

関連する問題