Как я могу получить все параметры выбора через jQuery, передав его идентификатор?
Я только ищу их значения, а не текст.
Как я могу получить все параметры выбора через jQuery, передав его идентификатор?
Я только ищу их значения, а не текст.
Ответы:
Использование:
$("#id option").each(function()
{
// Add $(this).val() to your list
});
$.map
гораздо более элегантный и менее подвержен ошибкам (см. ниже).
$('#id option').map((index, option) => option.value)
: обратите внимание, как обратная сигнатура обратного вызова по сравнению с «ванильной» map
функцией JS ( (item, index) =>
)
Я не знаю jQuery, но я знаю, что если вы получаете элемент select, он содержит объект 'options'.
var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option
$.map
вероятно, самый эффективный способ сделать это.
var options = $('#selectBox option');
var values = $.map(options ,function(option) {
return option.value;
});
Вы можете добавить параметры изменения, $('#selectBox option:selected')
если хотите, чтобы они были выбраны.
Первая строка выбирает все флажки и помещает их элемент jQuery в переменную. Затем мы используем .map
функцию jQuery, чтобы применить функцию к каждому из элементов этой переменной; все, что мы делаем, это возвращаем значение каждого элемента, так как это все, что нас волнует. Поскольку мы возвращаем их внутри функции map, фактически создается массив значений в соответствии с запросом.
$('#selectBox').val()
вернет массив выбранных значений.
Некоторые ответы использует each
, но map
это лучшая альтернатива здесь ИМХО:
$("select#example option").map(function() {return $(this).val();}).get();
В map
jQuery есть (как минимум) две функции. В ответе Томаса Петерсена используется «Utilities / jQuery.map»; в этом ответе используется «Обход / карта» (и, следовательно, немного более чистый код).
Это зависит от того, что вы собираетесь делать со значениями. Если, скажем, вы хотите вернуть значения из функции, map
возможно, это лучшая альтернатива. Но если вы собираетесь использовать значения напрямую, вы, вероятно, хотите each
.
get()
возвращаемый объект очень часто работает с базовым массивом». - api.jquery.com/map
text()
вместо val()
. Спасибо ! (Я заставил вас пройти 1000 ;->
)
$('select#id').find('option').each(function() {
alert($(this).val());
});
$("#id option").each(function()
{
$(this).prop('selected', true);
});
Хотя, ПРАВИЛЬНЫЙ способ - установить свойство DOM элемента, например, так:
$("#id option").each(function(){
$(this).attr('selected', true);
});
Это поместит значения параметров #myselectbox
в хороший чистый массив для вас:
// First, get the elements into a list
var domelts = $('#myselectbox option');
// Next, translate that into an array of just the values
var values = $.map(domelts, function(elt, i) { return $(elt).val();});
$.map(domelts, elt=> $(elt).val())
Вы можете взять все ваши "выбранные значения" по имени флажков и представить их в строке, отделенной ",".
Хороший способ сделать это - использовать jQuery $ .map ():
var selected_val = $.map($("input[name='d_name']:checked"), function(a)
{
return a.value;
}).join(',');
alert(selected_val);
select
а option
не о флажках.
Самый эффективный способ сделать это - использовать $.map()
Пример:
var values = $.map($('#selectBox option'), function(ele) {
return ele.value;
});
Для этого вы можете использовать следующий код:
var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
assignedRoleId.push(this.value);
});
Для варианта с множественным выбором:
$('#test').val()
возвращает список выбранных значений.
$('#test option').length
возвращает общее количество опций (как выбранных, так и не выбранных)
Это простой скрипт с jQuery:
var items = $("#IDSELECT > option").map(function() {
var opt = {};
opt[$(this).val()] = $(this).text();
return opt;
}).get();
var selectvalues = [];
for(var i = 0; i < items.length; i++) {
for(key in items[i]) {
var id = key;
var text = items[i][key];
item = {}
item ["id"] = id;
item ["text"] = text;
selectvalues.push(item);
}
}
console.log(selectvalues);
copy(selectvalues);
<select>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
Вот простой пример в jquery для получения всех значений, текстов или значения выбранного элемента или текста выбранного элемента
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).val());
})
printOptionValues = () => {
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).val());
})
}
printOptionTexts = () => {
$('#nCS1 > option').each((index, obj) => {
console.log($(obj).text());
})
}
printSelectedItemText = () => {
console.log($('#nCS1 option:selected').text());
}
printSelectedItemValue = () => {
console.log($('#nCS1 option:selected').val());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select size="1" id="nCS1" name="nCS1" class="form-control" >
<option value="22">Australia</option>
<option value="23">Brunei</option>
<option value="33">Cambodia</option>
<option value="32">Canada</option>
<option value="27">Dubai</option>
<option value="28">Indonesia</option>
<option value="25">Malaysia</option>
</select>
<br/>
<input type='button' onclick='printOptionValues()' value='print option values' />
<br/>
<input type='button' onclick='printOptionTexts()' value='print option texts' />
<br/>
<input type='button' onclick='printSelectedItemText()' value='print selected option text'/>
<br/>
<input type='button' onclick='printSelectedItemValue()' value='print selected option value' />
$("input[type=checkbox][checked]").serializeArray();
Или:
$(".some_class[type=checkbox][checked]").serializeArray();
Чтобы увидеть результаты:
alert($("input[type=checkbox][checked]").serializeArray().toSource());
Короткий путь
$(() => {
$('#myselect option').each((index, data) => {
console.log(data.attributes.value.value)
})})
или
export function GetSelectValues(id) {
const mData = document.getElementById(id);
let arry = [];
for (let index = 0; index < mData.children.length; index++) {
arry.push(mData.children[index].value);
}
return arry;}