Risposte:
var foo = $('#multiple').val();
L'uso della .val()
funzione in un elenco a selezione multipla restituirà una matrice dei valori selezionati:
var selectedValues = $('#multipleSelect').val();
e nel tuo html:
<select id="multipleSelect" multiple="multiple">
<option value="1">Text 1</option>
<option value="2">Text 2</option>
<option value="3">Text 3</option>
</select>
null
piuttosto che un array vuoto. Ciò significa che se stai aggiungendo programmaticamente un valore selezionato, devi fare un po 'di giocoleria per farlo bene.
var selectedValues = $('#multipleSelect').val() || [];
vale la pena notare che restituisce una matrice di stringhe. Stavo confrontando con un numero intero e non ottenevo corrispondenze, quindi ho aggiunto a .toString()
.
Puoi anche usare la funzione js map:
$("#multipleSelect :selected").map(function(i, el) {
return $(el).val();
}).get();
E quindi puoi ottenere qualsiasi proprietà option
dell'elemento:
return $(el).text();
return $(el).data("mydata");
return $(el).prop("disabled");
etc...
el
come oggetto jQuery per ogni singola opzione. Vai subito fuori dal DOM quando non è troppo strano. Potresti passare $(el).val()
a solo el.value
. Naturalmente se sei abituato a jQuery o vuoi acquisire dati o attributi come gli altri tuoi esempi, jQuery non fa male a nessuno.
var selected=[];
$('#multipleSelect :selected').each(function(){
selected[$(this).val()]=$(this).text();
});
console.log(selected);
Ancora un altro approccio a questo problema. L'array selezionato avrà gli indici come valori dell'opzione e ogni elemento dell'array avrà il testo come valore.
per esempio
<select id="multipleSelect" multiple="multiple">
<option value="abc">Text 1</option>
<option value="def">Text 2</option>
<option value="ghi">Text 3</option>
</select>
se si dice che le opzioni 1 e 2 sono selezionate.
l'array selezionato sarà:
selected['abc']=1;
selected['def']=2.
Solo di una riga
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text);
Output: ["text1", "text2"]
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.value);
Output: ["valore1", "valore2"]
Se usi .join ()
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text).join();
Output: testo1, testo2, testo3
Codice HTML:
<select id="multiple" multiple="multiple" name="multiple">
<option value=""> -- Select -- </option>
<option value="1">Opt1</option>
<option value="2">Opt2</option>
<option value="3">Opt3</option>
<option value="4">Opt4</option>
<option value="5">Opt5</option>
</select>
Codice JQuery:
$('#multiple :selected').each(function(i, sel){
alert( $(sel).val() );
});
Spero funzioni
$('#multiple').find(':selected')
prefigurare un selettore ID come questo: @Prabhagaran
Ottieni valori selezionati nel separatore virgola
var Accessids = "";
$(".multi_select .btn-group>ul>li input:checked").each(function(i,obj)
{
Accessids=Accessids+$(obj).val()+",";
});
Accessids = Accessids.substring(0,Accessids.length - 1);
console.log(Accessids);
Usa questo
$('#multipleSelect').change(function() {
var selectedValues = $(this).val();
});
Text 1
invece di valore? sostituire.val()
con.text()
?