Yanıtlar:
var foo = $('#multiple').val();
.val()
Çoklu seçim listesindeki işlevi kullanmak, seçilen değerlerden oluşan bir dizi döndürür:
var selectedValues = $('#multipleSelect').val();
ve html'nizde:
<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
boş bir dizi yerine döndüğünü belirtmek gerekir . Bu, programlı olarak seçilen bir değeri ekliyorsanız , doğru yapmak için biraz hokkabazlık yaptığınız anlamına gelir .
var selectedValues = $('#multipleSelect').val() || [];
Ayrıca dikkat çeken bir dizi dizeleri döndürür. Ben bir tamsayı karşılaştırmak ve hiçbir eşleşme elde edildi, bu yüzden bir ekledi .toString()
.
Js map fonksiyonunu da kullanabilirsiniz:
$("#multipleSelect :selected").map(function(i, el) {
return $(el).val();
}).get();
Ve sonra option
öğenin herhangi bir özelliğini alabilirsiniz :
return $(el).text();
return $(el).data("mydata");
return $(el).prop("disabled");
etc...
el
her bir seçenek için bir jQuery nesnesi olarak sarma ekstra masraf ödemek gerek yok . Çok garip olmadığında sadece DOM'dan çıkın. Sen değiştirebilir $(el).val()
lazım el.value
. Elbette jQuery'ye alışkınsanız veya diğer örnekleriniz gibi veri veya nitelikleri almak istiyorsanız, jQuery kimseye zarar vermez.
var selected=[];
$('#multipleSelect :selected').each(function(){
selected[$(this).val()]=$(this).text();
});
console.log(selected);
Yine bu soruna başka bir yaklaşım. Seçilen dizi, seçenek değerleri olarak dizinlere ve her dizi öğesinin değeri olarak metne sahip olacaktır.
Örneğin
<select id="multipleSelect" multiple="multiple">
<option value="abc">Text 1</option>
<option value="def">Text 2</option>
<option value="ghi">Text 3</option>
</select>
diyelim ki seçenek 1 ve 2 seçili.
seçilen dizi:
selected['abc']=1;
selected['def']=2.
Sadece bir satır-
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text);
Çıktı: ["text1", "text2"]
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.value);
Çıktı: ["değer1", "değer2"]
.Join () kullanırsanız
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text).join();
Çıktı: metin1, metin2, metin3
HTML Kodu:
<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>
JQuery Kodu:
$('#multiple :selected').each(function(i, sel){
alert( $(sel).val() );
});
Umarım çalışır
$('#multiple').find(':selected')
@Prabhagaran
Seçilen değerleri virgül ayırıcısında alma
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);
Sadece bunu kullan
$('#multipleSelect').change(function() {
var selectedValues = $(this).val();
});
Text 1
değer yerine almak istersen ? yerine.val()
sahip.text()
?