5

を選択示しますブートストラップ先行入力は:ボックス内の異なるテキストは、かつて私は、このように検索し、ブートストラップ先行入力を使用しています

$('.lookup').typeahead({ 

source: function (query, process) { 
    return $.getJSON(
     'json_autocomplete.php',{ query: query }, 
     function (data) { 

      var newData = []; 
       $.each(data, function(){ 

        newData.push(this.label); 
        //populate hidden field with id 
        $('#contact_id').val(this.id); 

       }); 

      return process(newData); 

     }); 
} 

}); 

JSONデータは次のようになります。それは素晴らしい取り組んでいる

[{"label":"Contact: Jeff Busch-> Busch, Jeff: 1975-11-24","value":"Busch, Jeff","id":"2096"}, ... 

。ユーザーが入力を開始すると、「ラベル」データが入力の下のリストに表示されます。しかし、ユーザーがリスト項目の1つをクリックすると、検索されたすべてのラベル情報ではなく、「値」テキストが入力テキストボックスに表示されます。

これは可能ですか?

ここでフィドルです:

http://jsfiddle.net/michels287/qdgo651h/

+0

あなたのHTMLはどのようなものが見えますか?これは唯一のスクリプトですか?たぶんjsfiddle? – whipdancer

+0

私はお詫び申し上げます。私は実証するためにフィドルを作った。私は先読みのように 'ラベル'情報がダウンダウンでどのように表示されるのが好きですが、項目が選択されると、入力に表示される '値'情報だけを持っていきたいと思います。 私のオリジナルの質問を、私が助けてくれることを期待しているバイブルで更新しました。 –

答えて

8

私は強くあなたがhttps://github.com/bassjobsen/Bootstrap-3-Typeaheadへのアップグレードをお勧めしますそれはちょうど、独自のリポジトリに維持され、バグフィックス、正確同じ古き良きブートストラップ2.xの先行入力でありますブートストラップ3.0は先読みをスキップしてtypeahead.jsになりました(これはもはやBTWがまったく保守されていません)。これは人生をはるかに容易にします。あなたは、単にすべてのねじれをスキップすることができた後

は、次の操作を行います。

$('#contact').typeahead({ 
    source: jsonData, 
    displayText: function(item) { 
    return item.label 
    }, 
    afterSelect: function(item) { 
    this.$element[0].value = item.value 
    } 
}) 

更新フィドルを - >http://jsfiddle.net/qdgo651h/1/


コメントごとに更新しました。私はあなたがsource一部それを行う必要があります

$('.lookup').typeahead({ 
    displayText: function(item) { 
     return item.label 
    }, 
    afterSelect: function(item) { 
     this.$element[0].value = item.value 
    }, 
    source: function (query, process) { 
    return $.getJSON('json_autocomplete.php', { query: query }, function(data) { 
     process(data) 
    }) 
    } 
}) 

をovercomplicateと信じています。 >http://jsfiddle.net/hwbnhbdd/1/ あなたはアップデートのようにフィドルにAJAXソースとしてhttp://myjson.com/を使用することができます - 以下のコメントからフィドルを更新しました。

+0

ありがとうございます。私は私のプロジェクトにあなたのコードを適応しようとしています。私は例としてフィドルを作った。しかし、私はAJAXを使って自分の先行のデータをリモートから取得し、その情報をJSONとして返します。私はこのことをajaxでフィーリングで再現する方法はわかりませんが、私が使っているコードをこの新しいフィドルで見せています。それを見ると、一番上のJSONデータがajax呼び出しが返すものであると仮定してください。私はまたあなたの要求ごとにブートストラップ先読み3への参照を更新しました。私のAjaxリクエストであなたのフィドルで同じことをどうやって達成できますか? http://jsfiddle.net/michels287/hwbnhbdd/ –

+0

@ chris.cavage、OK - 更新を参照してください。 – davidkonrad

+1

はい、私はそれを複雑にしました!何が助けになる!どうもありがとうございます! –

0

ただ、このようなアップデータイベントにデータを返す:

updater: function (item) { 
     $('#id').val(map[item].id); 

     //Here we return the text to display on the input control 
     return map[item].autocomplete; 
    }, 
関連する問題