Как я могу получить все варианты выбора через jQuery, передав его ID?
Я ищу только их значения, а не текст.
Как я могу получить все варианты выбора через jQuery, передав его ID?
Я ищу только их значения, а не текст.
Использование:
$("#id option").each(function()
{
// Add $(this).val() to your list
});
Я не знаю 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, она фактически строит массив значений, как запрошено.
В некоторых ответах используется each
, но map
- лучшая альтернатива здесь IMHO:
$("select#example option").map(function() {return $(this).val();}).get();
В jQuery есть (по крайней мере) две функции map
. Ответ Томаса Петерсена использует "Utilities/jQuery.map"; этот ответ использует "Traversing/map" (и, следовательно, немного более чистый код).
Это зависит от того, что вы собираетесь делать со значениями. Если вы, скажем, хотите вернуть значения из функции, map
, вероятно, является лучшей альтернативой. Но если вы собираетесь использовать значения непосредственно, вы, вероятно, захотите each
.
$('select#id').find('option').each(function() {
alert($(this).val());
});
$("#id option").each(function()
{
$(this).prop('selected', true);
});
Хотя способ CORRECT - установить свойство DOM элемента, например:
$("#id option").each(function(){
$(this).attr('selected', true);
});
Вы можете взять все свои "выбранные значения" по имени флажков и представить их в укусе, разделенном ",".
Хороший способ сделать это - использовать jQuery $.map():
var selected_val = $.map($("input[name='d_name']:checked"), function(a)
{
return a.value;
}).join(',');
alert(selected_val);
Это поместит значения параметров #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()
Пример:
var values = $.map($('#selectBox option'), function(ele) {
return ele.value;
});
Для этого можно использовать следующий код:
var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
assignedRoleId.push(this.value);
});
Для опции multiselect:
$('#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>
$("input[type=checkbox][checked]").serializeArray();
Или:
$(".some_class[type=checkbox][checked]").serializeArray();
Чтобы увидеть результаты:
alert($("input[type=checkbox][checked]").serializeArray().toSource());
Если вы ищете все варианты с некоторым выделенным текстом, то код ниже будет работать.
$('#test').find("select option:contains('B')").filter(":selected");
Вот простой пример в jquery для получения всех значений, текстов или значения выбранного элемента или текста выбранного элемента
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' />