Как удалить элементы или добавить элементы в поле выбора? Я использую jQuery, если это упростит задачу. Ниже приведен пример окна выбора.
<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел две страницы, которые кажутся полезными, они написаны для ASP.Net, но должны применяться те же вещи:
Удалить вариант:
$("#selectBox option[value='option1']").remove();<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>Добавить вариант:
$("#selectBox").append('<option value = "option5">option5</option>');<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>Честно говоря, я считаю, что способ манипулирования полями выбора с помощью javascript - одна из самых запутанных вещей, даже если у вас есть достаточно хорошее понимание селекторов и DOM.
Я считаю, что jQuery плагин манипуляции с полем выбора полезен для этого типа вещей.
Вы можете легко удалить элемент по индексу, значению или регулярному выражению.
removeOption(index/value/regex/array[, selectedOnly])
Remove an option by
- index: $("#myselect2").removeOption(0);
- value: $("#myselect").removeOption("Value");
- regular expression: $("#myselect").removeOption(/^val/i);
- array $("#myselect").removeOption(["myselect_1", "myselect_2"]);
Чтобы убрать все опции, можно сделать $("#myselect").removeOption(/./);.
-1, потому что это можно сделать без плагина, используя jQuery и базовое программирование.
ᕀ 1 зачем изобретать велосипед
window.onload = function ()
{
var select = document.getElementById('selectBox');
var delButton = document.getElementById('delete');
function remove()
{
value = select.selectedIndex;
select.removeChild(select[value]);
}
delButton.onclick = remove;
}
Чтобы добавить элемент, я бы создал второе поле выбора и:
var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');
function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}
addSelect.onclick = add;
Но не jQuery.
@JBeckton: оглядываясь на это написанное 4 года назад, я смеюсь над собой, и вы правы :)
Вы можете удалить выбранный элемент с помощью этого:
$("#selectBox option:selected").remove();
Это полезно, если у вас есть список, а не раскрывающийся список.
Он удаляет все для меня ... Подождите, я использую Select с несколькими атрибутами. Как я могу удалить его из множественного выбора?
Это должно сделать это:
$('#selectBox').empty();
Чтобы удалить элемент
$("select#mySelect option[value='option1']").remove();
Чтобы добавить элемент
$("#mySelect").append('<option value = "option1">Option</option>');
Чтобы проверить вариант
$('#yourSelect option[value=yourValue]').length > 0;
Чтобы удалить выбранный вариант
$('#mySelect :selected').remove();
Просто чтобы увеличить это для всех, кто ищет, вы также можете просто:
$("#selectBox option[value='option1']").hide();
а также
$("#selectBox option[value='option1']").show();
Я думаю, это зависит от браузера. Это может просто отключить эту конкретную опцию.
Я не рекомендую этот метод, так как он зависит от браузера.
Это старый пост, но я хотел бы его прокомментировать. Хотя это очень хороший способ справиться с опцией выбора, он не рекомендуется, потому что IE не поддерживает его.
Добавление / удаление значения динамически без жесткого кода:
// удалить значение из выбора динамически
$("#id-select option[value='" + dynamicVal + "']").remove();
// Добавляем динамическое значение для выбора
$("#id-select").append('<option value = "' + dynamicVal + '">' + dynamicVal + '</option>');
Мне пришлось удалить первую опцию из выбора, без идентификатора, только класс, поэтому я успешно использовал этот код:
$('select.validation').find('option:first').remove();
Я просто хочу предложить другой способ добавления option.
Вместо того, чтобы устанавливать value и text как строку, можно также:
var option = $('<option/>')
.val('option5')
.text('option5');
$('#selectBox').append(option);
Это менее подверженное ошибкам решение при динамическом добавлении значений параметров и текстов.
Я не голосующий против, но похоже, что вы на полпути ответили OP о том, как добавить параметр, но не о том, как его удалить.
function removeOptionsByValue(selectBox, value)
{
for (var i = selectBox.length - 1; i >= 0; --i) {
if (selectBox[i].value == value) {
selectBox.remove(i);
}
}
}
function addOption(selectBox, text, value, selected)
{
selectBox.add(new Option(text, value || '', false, selected || false));
}
var selectBox = document.getElementById('selectBox');
removeOptionsByValue(selectBox, 'option3');
addOption(selectBox, 'option5', 'option5', true);<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>jQuery(function($) {
$.fn.extend({
remove_options: function(value) {
return this.each(function() {
$('> option', this)
.filter(function() {
return this.value == value;
})
.remove();
});
},
add_option: function(text, value, selected) {
return this.each(function() {
$(this).append(new Option(text, value || '', false, selected || false));
});
}
});
});
jQuery(function($) {
$('#selectBox')
.remove_options('option3')
.add_option('option5', 'option5', true);
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>Если кому-то нужно удалить параметры ВСЕ внутри выбора, я выполнил небольшую функцию.
Я надеюсь ты сочтёшь это полезным
var removeAllOptionsSelect = function(element_class_or_id){
var element = $(element_class_or_id+" option");
$.each(element,function(i,v){
value = v.value;
$(element_class_or_id+" option[value = "+value+"]").remove();
})
}
Только нужно бежать
removeAllOptionsSelect("#contenedor_modelos");
Разве результат не равен $('#contenedor_modelos').empty();? Приятно видеть какие-то действия :)
это поле выбора html
<select name = "selectBox" id = "selectBox">
<option value = "option1">option1</option>
<option value = "option2">option2</option>
<option value = "option3">option3</option>
<option value = "option4">option4</option>
</select>
если вы хотите полностью удалить и добавить опцию из окна выбора, вы можете использовать этот код
$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value = "option1">Option</option>');
когда-то нам нужно скрыть и показать опцию из окна выбора, но не удалять, тогда вы можете использовать этот код
$("#selectBox option[value='option1']").hide();
$("#selectBox option[value='option1']").show();
когда-нибудь нужно удалить выбранную опцию из поля выбора, затем
$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();
когда вам нужно удалить все опции, этот код
('#selectBox').empty();
когда нужен первый вариант или последний, то этот код
$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
Если вам нужно удалить один параметр и выбрать другой: $ ('# selectBox'). Val ('option2'). Find ('option [value = "option1"] ') .remove ();