Ab Select2 4.x wird immer ein Array zurückgegeben, auch für Nicht-Multi-Auswahllisten.
var data = $('your-original-element').select2('data')
alert(data[0].text);
alert(data[0].id);
Für Select2 3.x und niedriger
Einzelauswahl:
var data = $('your-original-element').select2('data');
if(data) {
alert(data.text);
}
Beachten Sie, dass die Variable 'data' null ist, wenn keine Auswahl vorhanden ist.
Mehrfachauswahl:
var data = $('your-original-element').select2('data')
alert(data[0].text);
alert(data[0].id);
alert(data[1].text);
alert(data[1].id);
Aus den 3.x- Dokumenten :
data Ruft die Auswahl ab oder legt diese fest. Analog zur val-Methode, funktioniert jedoch mit Objekten anstelle von IDs.
Eine Datenmethode, die bei einer Einzelauswahl mit einem nicht festgelegten Wert aufgerufen wird, gibt null zurück, während eine Datenmethode, die bei einer leeren Mehrfachauswahl aufgerufen wird, [] zurückgibt.
$('your-original-element')
Einstellung auf Mehrfachauswahl$('your-original-element').select2('data')
das Array zurückgegeben wird. In diesem Falldata.text
funktioniert die Verwendung nichtdata[index].text
var data = $('your-original-element').select2('data')[0]
bei mir funktioniert.$('your-original-element').select2('data').id // or .text
gab mirundefined
. Siehe diese jsfiddle als Beweis. Versuchen Sie, sich$('your-original-element').select2('data').id // or .text
in der Geige in der Konsole anzumelden.$('your-original-element').select2('data');
Arbeit für mich. DankeIch habe es endlich herausgefunden:
var $your-original-element = $('.your-original-element'); var data = $your-original-element.select2('data')[0]['text']; alert(data);
wenn Sie auch den Wert wollen:
var value = $your-original-element.select2('data')[0]['id']; alert(value);
quelle
Verwendet dies für Showtext
var data = $('#id-selected-input').select2('data'); data.forEach(function (item) { alert(item.text); })
quelle
Sie können den ausgewählten Wert auch mit folgendem Code festlegen:
alert("Selected option value is: "+$('#SelectelementId').select2("val"));
quelle
Der folgende Code löst auch etwas anderes
.on("change", function(e) { var lastValue = e.currentTarget.value; var lastText = e.currentTarget.textContent; });
quelle
Der richtige Weg, dies ab Version 4 zu tun, ist:
$('.select2-chosen').select2('data')[0].text
Es ist nicht dokumentiert und könnte in Zukunft ohne Vorwarnung brechen.
Sie werden wahrscheinlich zuerst prüfen wollen, ob es eine Auswahl gibt:
var s = $('.select2-chosen'); if(s.select2('data') && !!s.select2('data')[0]){ //do work }
quelle
Wieder schlage ich einfach und leicht vor
Es funktioniert perfekt mit Ajax, wenn Benutzer suchen und auswählen. Es speichert die ausgewählten Informationen über Ajax
$("#vendor-brands").select2({ ajax: { url:site_url('general/get_brand_ajax_json'), dataType: 'json', delay: 250, data: function (params) { return { q: params.term, // search term page: params.page }; }, processResults: function (data, params) { // parse the results into the format expected by Select2 // since we are using custom formatting functions we do not need to // alter the remote JSON data, except to indicate that infinite // scrolling can be used params.page = params.page || 1; return { results: data, pagination: { more: (params.page * 30) < data.total_count } }; }, cache: true }, escapeMarkup: function (markup) { return markup; }, // let our custom formatter work minimumInputLength: 1, }).on("change", function(e) { var lastValue = $("#vendor-brands option:last-child").val(); var lastText = $("#vendor-brands option:last-child").text(); alert(lastValue+' '+lastText); });
quelle
Dieser funktioniert gut mit V 4.0.3
var vv = $('.mySelect2'); var label = $(vv).children("option[value='"+$(vv).select2("val")+"']").first().html(); console.log(label);
quelle
In Select2 Version 4 hat jede Option dieselben Eigenschaften wie die Objekte in der Liste.
wenn Sie das Objekt haben
Obj = { name: "Alberas", description: "developer", birthDate: "01/01/1990" }
dann rufen Sie die ausgewählten Daten ab
var data = $('#id-selected-input').select2('data'); console.log(data[0].name); console.log(data[0].description); console.log(data[0].birthDate);
quelle