2016-12-06 5 views
0

Ich habe Bootstrap Combobox, wo auf Autocomplete ändern möchte ich Wert auswählen, Problem ist, dass dies funktioniert nur, wenn ich gefilterte Ergebnis innerhalb Combo doppelklicken, wenn ich nur einmal klicke ich meine Variable Variable leer.Autocomplete und Bootstrap Combobox

$('#MyComboId').on('change', function() { 
    var myselection = $(this).find("option:selected").val();   
    });  
}); 
+0

können Sie bieten ein funktionierendes Beispiel? – Dekel

+0

Passt das https://jsfiddle.net/neceegbv/5/ zu Ihrer Frage? –

Antwort

0

Wenn ich richtig verstehe Sie bootstrap-combobox (Link) verwenden.

fand ich Setter Code:

select: function() { 
    var val = this.$menu.find('.active').attr('data-value'); 
    this.$element.val(this.updater(val)).trigger('change'); 
    this.$target.val(this.map[val]).trigger('change'); 
    this.$source.val(this.map[val]).trigger('change'); 
    this.$container.addClass('combobox-selected'); 
    this.selected = true; 
    return this.hide(); 
} 

Update:

Wenn der Benutzer auf Artikel von Dropdownlist klickt, wird change Ereignis ausgelöst, die nicht korrekt ist. I.e. Die Eingabe wird bereinigt, danach wird sie mit dem richtigen Wert gefüllt.

var el = $('.combobox').combobox(); 

el.on('change', function(e){ 
if($(this).data('combobox').$element.val() == ''){ 
    console.log('Its triggered incorrectly'); 
    return false; 
} 

var dic = $(this).data('combobox').map, 
    val = $(this).val(), 
    clean = true; 

for(var i in dic){ 
    if(!dic.hasOwnProperty(i)) continue; 
    if(dic[i] == val){ 
    console.log(dic[i], i); // dic[i] = value, i = label 
    clean = false; 
    break; 
    } 
} 

if(clean) 
    console.log('Input was cleared'); 
}) 

Demo

+0

Eigentlich ist diese jfiddle Verbindung, die Sie zur Verfügung stellen, wirklich perfektes Beispiel des I Problems, das ich erfahre. Sie sehen, wenn Sie aus der Combo NewYork auswählen, funktioniert es gut, aber wenn Sie New eingeben und dann versuchen, New York aus dem Menü auszuwählen, funktioniert es nicht. – user1765862

+0

@ user1765862 Bitte überprüfen Sie meine aktualisierte Antwort –

Verwandte Themen