5

seçilen gösterir:Bootstrap typeahead: kutuda farklı metin kez böyle aramak için önyükleme typeahead kullanıyorum

$('.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 veri şuna benzer: Bu büyük çalışmaktadır

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

. Kullanıcı yazmaya başladığında "etiket" verileri girişin altındaki bir listede gösterilir. HOWEVER, kullanıcı liste öğelerinden birini tıkladığında, girilen tüm etiket bilgisini değil, giriş metin kutusunda "değer" metninin görünmesini istiyorum!

Bu mümkün mü?

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

+0

Ne html neye benziyor? Tek senaryo bu mu? Belki bir jsfiddle? – whipdancer

+0

Özür dilerim. Göstermek için bir keman oluşturdum. 'Etiket' bilgisinin yazım hatası gibi düştüğünde nasıl göründüğünü seviyorum, ancak bir öğe seçildiğinde girdide görünecek 'değer' bilgisine sahip olmak isterim. Özgün sorumu, yardımcı olacağını umduğum bir kemanla güncelleştirdim. –

cevap

8

şiddetle Sadece korunur ve kendi depoda bugfixed tam aynı iyi eski önyükleme 2.x typeahead olduğunu https://github.com/bassjobsen/Bootstrap-3-Typeahead yükseltme tavsiye eder: Burada

keman var bootstrap 3.0, typeahead'i typeahead.js lehine atladığından (BTW artık hiç korunmuyor). Bu sizin için hayatı daha kolay hale getirecek. sadece tüm kıvrımlarını atlayıp olabilir Bundan sonra

bunu:

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

güncellenmiş keman ->http://jsfiddle.net/qdgo651h/1/


comment başına güncellendi. Sana source bölümünü yapmalıyım

$('.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 inanıyoruz. Aşağıdaki yorumdan aşağıdaki bilgileri güncelleştir: ->http://jsfiddle.net/hwbnhbdd/1/ Güncellemedeki gibi bilmecelerde http://myjson.com/ AJAX kaynağı olarak kullanabilirsiniz.

+0

Teşekkür ederim. Kodunuzu projeme uyarlamaya çalışıyorum. Bu kemanı örnek olarak yaptım. Bununla birlikte, veri yazımı için AJAX ile veri alıyorum ve bilgileri JSON olarak döndürüyorum. Bunu ajax ile nasıl kopyalayacağımı bilmiyorum, ama bu yeni kulağı kullanıyorum kodda gösteriyorum. Eğer buna bakarsanız, lütfen üstteki JSON verisinin ajax çağrısının geri döndüğü olduğunu varsayalım. Ayrıca istek başına bootstrap typeahead 3 referanslarını güncelledim. Ajax isteğimle aynı şeyi nasıl gerçekleştirebilirim? http://jsfiddle.net/michels287/hwbnhbdd/ –

+0

@ chris.cavage, Tamam - güncellemeye bakın. – davidkonrad

+1

Evet, bunun üstesinden geldim! Ne yardım ama! Çok teşekkür ederim! –

0

Bunun gibi güncelleyici olayı ilgili veri:

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

     //Here we return the text to display on the input control 
     return map[item].autocomplete; 
    }, 
İlgili konular