2016-07-23 14 views
1

Ich benutze Select2 als Suchdropdown. Wenn ich jedoch ein Element in der Liste auswähle, zeigt es den vorherigen Wert an.Select2 Select Funktion Zeigt den vorherigen Wert an

initialisieren ich das Drop-Down-Select2:

$(document).ready(function() { 
    $(".ordersSelect").select2(); 
}); 

Und dann die Optionen:

<select class="ordersSelect" style="width:75%;"> 
    <option value>Select a priority...</option> 
    <option value="0">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    <option value="6">6</option> 
</select> 

Also lassen Sie uns sagen, ich wähle 1, meine Konsole aus diesem Code:

// when value is selected 
$('.ordersSelect').on('select2:selecting', function(e) { 
    var prioritySelection = $('.ordersSelect').select2('data')[0].text; 
    console.log("DATA: " + prioritySelection); 
}); 

Zeigt "DATA: Wählen Sie eine Priorität ...". Wenn ich dann "3" sage, zeigt die Konsole "DATA: 1" an.

Es wird weiterhin der Wert aus der vorherigen Auswahl angezeigt. Wenn ich "select2: selecting" zu "select2: selected" ändere, erscheint die Konsolenmeldung einfach nicht.

Was mache ich hier falsch ..?

Antwort

2

Zuerst sollten Sie unbedingt select2:select verwenden.
select2:selecting ausgelöst wird, bevor das Ergebnis ausgewählt wird ..

$('select').on('select2:select', function (evt) { 
    // Do something 
}); 

Zweitens können Sie das Datenobjekt/Wert aus dem Ereignis selbst bekommen. Überprüfen Sie die evt.params.data Eigenschaft.

+2

Danke, das funktioniert perfekt. – WolfieeifloW

0

Verstanden mit:

$('.ordersSelect').select2().on("change", function(e) { 
    var obj = $(".ordersSelect").select2("data"); 
    console.log("change val=" + obj[0].id); // 0 or 1 on change 
}); 

Wenn jemand jedoch einen besseren Weg weiß, ich bin auf jeden Fall bis es zu hören.