Відповіді:
var foo = $('#multiple').val();
Використання .val()
функції у списку з декількома виборами поверне масив вибраних значень:
var selectedValues = $('#multipleSelect').val();
та у вашому 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
а не порожній масив. Це означає, що якщо ви систематично додаєте вибране значення, вам доведеться трохи жонглювати, щоб правильно його встановити.
var selectedValues = $('#multipleSelect').val() || [];
Також варто зазначити, що він повертає масив рядків. Я порівнював ціле число і не отримував збігів, тому я додав a .toString()
.
Ви також можете використовувати функцію js map:
$("#multipleSelect :selected").map(function(i, el) {
return $(el).val();
}).get();
І тоді ви можете отримати будь-яку властивість option
елемента:
return $(el).text();
return $(el).data("mydata");
return $(el).prop("disabled");
etc...
el
як об’єкт jQuery за кожен варіант. Просто йдіть прямо з DOM, коли це не надто дивно. Ви можете змінитись $(el).val()
на справедливу el.value
. Звичайно, якщо ви звикли до jQuery або хочете захоплювати дані чи атрибути, як ваші інші приклади, jQuery нікому не шкодить.
var selected=[];
$('#multipleSelect :selected').each(function(){
selected[$(this).val()]=$(this).text();
});
console.log(selected);
Ще одне схвалення цієї проблеми. Вибраний масив матиме індекси як параметри значень, і кожен елемент масиву матиме текст як його значення.
наприклад
<select id="multipleSelect" multiple="multiple">
<option value="abc">Text 1</option>
<option value="def">Text 2</option>
<option value="ghi">Text 3</option>
</select>
якщо обрані варіанти 1 та 2.
вибраний масив буде:
selected['abc']=1;
selected['def']=2.
Лише по одному рядку-
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text);
Вихід: ["text1", "text2"]
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.value);
Вихід: ["value1", "value2"]
Якщо ви використовуєте .join ()
var select_button_text = $('#SelectQButton option:selected')
.toArray().map(item => item.text).join();
Вихід: text1, text2, text3
Код 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>
Код JQuery:
$('#multiple :selected').each(function(i, sel){
alert( $(sel).val() );
});
Сподіваюся, це спрацює
$('#multiple').find(':selected')
@Prabhagaran
Отримати вибрані значення в роздільниках коми
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);
Просто використовуйте це
$('#multipleSelect').change(function() {
var selectedValues = $(this).val();
});
Text 1
замість вартості? замінити.val()
на.text()
?