So erhalten Sie den gesamten ausgewählten Optionstext aus der Mehrfachauswahl mit Javascript
Lesezeit: 3 Minuten
Benutzer123
Ich habe ein Problem damit, alle ausgewählten Optionen in der Mehrfachauswahl zu erhalten
<select multiple="" title="" class="" id="fm_delivery_or_collection" name="fm_fields[fm_delivery_or_collection][]">
<option value="90">Delivery or Collection1</option>
<option value="91">Delivery or Collection2</option>
<option value="92">Delivery or Collection3</option>
</select>
Unten ist mein Code und es gibt mir nur die erste ausgewählte Option zurück
var select = form.find('select')
for (var i = 0; i < select.length; i++)
{
var s_id = jQuery(select[i]).attr('id');
var str="",i;
var e = document.getElementById(s_id);
var strUser = e.options[e.selectedIndex].text;
var name = jQuery(select[i]).attr('name')
var str1 = jQuery(select[i]).attr('id').replace("fm_"," ")
requestString += "<b>"+str1.replace(/_/g," ")+"</b>" + ':' +strUser+"<br>";
}
Also schlagen Sie mir bitte vor, wie ich alle ausgewählten Optionstexte erhalten kann und wo ich Fehler mache?
Der Wert von select multiple (oder select[select.selectedIndex]) ist ein Array …
– Teemu
20. Februar 2013 um 5:15 Uhr
Die Antworten sind zu kompliziert. Sie können alle ausgewählten Optionstexte mit .map() abrufen. $("select :selected").map(function (i, element) { return jQuery(element).text(); }).get();
$("#fm_delivery_or_collection option:selected").each(function () {
var $this = $(this);
if ($this.length) {
var selText = $this.text();
console.log(selText);
}
});
tun Sie jetzt alles in einer Zeile
var text = $('#selector option:selected').toArray().map(item => item.text).join();
es kommt so zurück:
text1,text2,text3,text4
Schöne und einfache Lösung. Wenn Sie eine andere Ausgabe benötigen, akzeptiert join() ein Trennzeichen als Argument. Zum Beispiel wird join(‘ | ‘) “text1 | text2 | text3 | text4” ausgeben. Und eine kleine Verbesserung: jQuery empfiehlt die Verwendung von $(‘#selector’).find(‘option:s selected’), da die Suche nach ID allein auf document.getElementById angewiesen ist, was sehr schnell ist, während der vollständige Selektor dies nicht tut. Wenn sich #selector auf ein select-Tag bezieht, können Sie für etwas mehr Effizienz auch die unnötige “option” aus dem Selektor entfernen: learn.jquery.com/performance/optimize-selectors
– Thibault Witzig
5. Juli 2019 um 11:41 Uhr
// Return an array of the selected opion values
// select is an HTML select element
function GetSelectValues(select) {
var result = [];
var options = select && select.options;
var opt;
for (var i=0, iLen=options.length; i<iLen; i++) {
opt = options[i];
if (opt.selected) {
result.push(opt.value || opt.text);
}
}
return result;
}
Übergeben Sie diese Funktion Ihrer Auswahlbox wie folgt.
var selectBox = document.getElementsById('fm_delivery_or_collection');
alert(GetSelectValues(selectBox ));
Es wird das Array der ausgewählten Werte zurückgegeben
Durch die Verwendung von Jquery
$('select#fm_delivery_or_collection').val()
Die val Funktion aufgerufen von der select gibt ein Array zurück, wenn es ein Vielfaches ist.
GautamD31
Versuchen Sie es damit
$("#fm_delivery_or_collection option").each(function(){
if($(this).attr('selected') == 'selected')
{
var name = $("#fm_delivery_or_collection").attr('name')
var str1 = $("#fm_delivery_or_collection").attr('id').replace("fm_"," ")
requestString += "<b>"+str1.replace(/_/g," ")+"</b>" + ':' +strUser+"<br>";
}
})
Der Wert von
select multiple
(oderselect[select.selectedIndex]
) ist ein Array …– Teemu
20. Februar 2013 um 5:15 Uhr
Die Antworten sind zu kompliziert. Sie können alle ausgewählten Optionstexte mit .map() abrufen.
$("select :selected").map(function (i, element) { return jQuery(element).text(); }).get();
– Kalimah
30. Januar 2018 um 10:08 Uhr