3

Wie kann ich an der <option> halten, die gerade ausgewählt wurde, als ich das Ereignis select2:select hörte? Beachten Sie, dass dies bei Verwendung einer Einfachauswahl einfach ist, da nur eine Option ausgewählt ist, die gerade ausgewählt sein muss. Ich möchte auch die Option finden können, die gerade ausgewählt wurde, wenn Sie eine Mehrfachauswahl (<select multiple>) verwenden.Ausgewählte Option im Select2-Event auswählen, wenn mehrere Optionen ausgewählt werden können

Im select2:unselect Ereignis, das nicht ausgewählte <option> ist über e.params.data.element, aber es ist nicht so im select2:select Ereignis. Ich sehe keinen Grund, warum die <option> nicht verfügbar sein sollte, da sie zu diesem Zeitpunkt erstellt wird. Für das Ereignis select2:selecting ist jedoch die <option> noch nicht erstellt und kann offensichtlich nicht verfügbar sein, wenn das Ereignis ausgelöst wird.

Antwort

8

Ich habe die folgenden verwendet, um den Strom in Select2 ausgewählt zu bekommen (es ist für die Version 4 und höher):

// single value 
var test = $('#test'); 
test.on("select2:select", function(event) { 
    var value = $(event.currentTarget).find("option:selected").val(); 
    console.log(value); 
}); 

UPDATE: Multi Ausgewählte Werte (mit und ohne zuletzt gewählten)

// multi values, with last selected 
var old_values = []; 
var test = $("#test"); 
test.on("select2:select", function(event) { 
    var values = []; 
    // copy all option values from selected 
    $(event.currentTarget).find("option:selected").each(function(i, selected){ 
    values[i] = $(selected).text(); 
    }); 
    // doing a diff of old_values gives the new values selected 
    var last = $(values).not(old_values).get(); 
    // update old_values for future use 
    old_values = values; 
    // output values (all current values selected) 
    console.log("selected values: ", values); 
    // output last added value 
    console.log("last added: ", last); 
}); 
+0

Findet dies nicht nur den Wert der ersten Option unter den ausgewählten Optionen? Ich möchte die Option auswählen, die gerade ausgewählt wurde, auch wenn mehrere Optionen ausgewählt sind. –

+0

Dann schlage ich vor, nicht die .val(); – Dennis

+0

Ja. Um die gerade gewählte Option zu erhalten, müsste ich eine Liste aller ausgewählten Optionen behalten und sehen, welche Option jetzt ausgewählt ist, aber nicht in der Liste ist. Oder hast du eine bessere Idee? –