How do I remove items from, or add items to, a select box? I'm running jQuery, should that make the task easier. Below is an example select box.
<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>
This question is related to
javascript
jquery
html
html-select
Adding/Removing value dynamically without hard-code:
// remove value from select dynamically
$("#id-select option[value='" + dynamicVal + "']").remove();
// Add dynamic value to select
$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');
this is select box 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>
when you want to totally remove and add option from select box then you can use this code
$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');
sometime we need to hide and show option from select box , but not remove then you can use this code
$("#selectBox option[value='option1']").hide();
$("#selectBox option[value='option1']").show();
sometime need to remove selected option from select box then
$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();
when you need to remove all option then this code
('#selectBox').empty();
when need to first option or last then this code
$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
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;
}
To add the item I would create second select box and:
var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');
function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}
addSelect.onclick = add;
Not jQuery though.
I had to remove the first option from a select, with no ID, only a class, so I used this code successfully:
$('select.validation').find('option:first').remove();
To Remove an Item
$("select#mySelect option[value='option1']").remove();
To Add an item
$("#mySelect").append('<option value="option1">Option</option>');
To Check for an option
$('#yourSelect option[value=yourValue]').length > 0;
To remove a selected option
$('#mySelect :selected').remove();
I found two pages that seem helpful, it's written for ASP.Net, but the same stuff should apply:
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;
}
To add the item I would create second select box and:
var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');
function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}
addSelect.onclick = add;
Not jQuery though.
I find the jQuery select box manipulation plugin useful for this type of thing.
You can easily remove an item by index, value, or regex.
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"]);
To remove all options, you can do $("#myselect").removeOption(/./);
.
You can delete the selected item with this:
$("#selectBox option:selected").remove();
This is useful if you have a list and not a dropdown.
I find the jQuery select box manipulation plugin useful for this type of thing.
You can easily remove an item by index, value, or regex.
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"]);
To remove all options, you can do $("#myselect").removeOption(/./);
.
You can delete the selected item with this:
$("#selectBox option:selected").remove();
This is useful if you have a list and not a dropdown.
I find the jQuery select box manipulation plugin useful for this type of thing.
You can easily remove an item by index, value, or regex.
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"]);
To remove all options, you can do $("#myselect").removeOption(/./);
.
this is select box 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>
when you want to totally remove and add option from select box then you can use this code
$("#selectBox option[value='option1']").remove();
$("#selectBox").append('<option value="option1">Option</option>');
sometime we need to hide and show option from select box , but not remove then you can use this code
$("#selectBox option[value='option1']").hide();
$("#selectBox option[value='option1']").show();
sometime need to remove selected option from select box then
$('#selectBox :selected').remove();
$("#selectBox option:selected").remove();
when you need to remove all option then this code
('#selectBox').empty();
when need to first option or last then this code
$('#selectBox').find('option:first').remove();
$('#selectBox').find('option:last').remove();
To Remove an Item
$("select#mySelect option[value='option1']").remove();
To Add an item
$("#mySelect").append('<option value="option1">Option</option>');
To Check for an option
$('#yourSelect option[value=yourValue]').length > 0;
To remove a selected option
$('#mySelect :selected').remove();
function removeOptionsByValue(selectBox, value)_x000D_
{_x000D_
for (var i = selectBox.length - 1; i >= 0; --i) {_x000D_
if (selectBox[i].value == value) {_x000D_
selectBox.remove(i);_x000D_
}_x000D_
}_x000D_
}_x000D_
_x000D_
function addOption(selectBox, text, value, selected)_x000D_
{_x000D_
selectBox.add(new Option(text, value || '', false, selected || false));_x000D_
}_x000D_
_x000D_
var selectBox = document.getElementById('selectBox');_x000D_
_x000D_
removeOptionsByValue(selectBox, 'option3');_x000D_
addOption(selectBox, 'option5', 'option5', true);
_x000D_
<select name="selectBox" id="selectBox">_x000D_
<option value="option1">option1</option>_x000D_
<option value="option2">option2</option>_x000D_
<option value="option3">option3</option>_x000D_
<option value="option4">option4</option> _x000D_
</select>
_x000D_
jQuery(function($) {_x000D_
$.fn.extend({_x000D_
remove_options: function(value) {_x000D_
return this.each(function() {_x000D_
$('> option', this)_x000D_
.filter(function() {_x000D_
return this.value == value;_x000D_
})_x000D_
.remove();_x000D_
});_x000D_
},_x000D_
add_option: function(text, value, selected) {_x000D_
return this.each(function() {_x000D_
$(this).append(new Option(text, value || '', false, selected || false));_x000D_
});_x000D_
}_x000D_
});_x000D_
});_x000D_
_x000D_
jQuery(function($) {_x000D_
$('#selectBox')_x000D_
.remove_options('option3')_x000D_
.add_option('option5', 'option5', true);_x000D_
});
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<select name="selectBox" id="selectBox">_x000D_
<option value="option1">option1</option>_x000D_
<option value="option2">option2</option>_x000D_
<option value="option3">option3</option>_x000D_
<option value="option4">option4</option> _x000D_
</select>
_x000D_
I had to remove the first option from a select, with no ID, only a class, so I used this code successfully:
$('select.validation').find('option:first').remove();
If somebody need delete ALL options inside a select, i did a litle function.
I hope you find it useful
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();
})
}
Only have to run
removeAllOptionsSelect("#contenedor_modelos");
This should do it:
$('#selectBox').empty();
If somebody need delete ALL options inside a select, i did a litle function.
I hope you find it useful
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();
})
}
Only have to run
removeAllOptionsSelect("#contenedor_modelos");
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;
}
To add the item I would create second select box and:
var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');
function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}
addSelect.onclick = add;
Not jQuery though.
Just to augment this for anyone looking, you are also able to just:
$("#selectBox option[value='option1']").hide();
and
$("#selectBox option[value='option1']").show();
I find the jQuery select box manipulation plugin useful for this type of thing.
You can easily remove an item by index, value, or regex.
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"]);
To remove all options, you can do $("#myselect").removeOption(/./);
.
I found two pages that seem helpful, it's written for ASP.Net, but the same stuff should apply:
I just want to suggest another way to add an option
.
Instead of setting the value
and text
as a string one can also do:
var option = $('<option/>')
.val('option5')
.text('option5');
$('#selectBox').append(option);
This is a less error-prone solution when adding options' values and texts dynamically.
I found two pages that seem helpful, it's written for ASP.Net, but the same stuff should apply:
This should do it:
$('#selectBox').empty();
function removeOptionsByValue(selectBox, value)_x000D_
{_x000D_
for (var i = selectBox.length - 1; i >= 0; --i) {_x000D_
if (selectBox[i].value == value) {_x000D_
selectBox.remove(i);_x000D_
}_x000D_
}_x000D_
}_x000D_
_x000D_
function addOption(selectBox, text, value, selected)_x000D_
{_x000D_
selectBox.add(new Option(text, value || '', false, selected || false));_x000D_
}_x000D_
_x000D_
var selectBox = document.getElementById('selectBox');_x000D_
_x000D_
removeOptionsByValue(selectBox, 'option3');_x000D_
addOption(selectBox, 'option5', 'option5', true);
_x000D_
<select name="selectBox" id="selectBox">_x000D_
<option value="option1">option1</option>_x000D_
<option value="option2">option2</option>_x000D_
<option value="option3">option3</option>_x000D_
<option value="option4">option4</option> _x000D_
</select>
_x000D_
jQuery(function($) {_x000D_
$.fn.extend({_x000D_
remove_options: function(value) {_x000D_
return this.each(function() {_x000D_
$('> option', this)_x000D_
.filter(function() {_x000D_
return this.value == value;_x000D_
})_x000D_
.remove();_x000D_
});_x000D_
},_x000D_
add_option: function(text, value, selected) {_x000D_
return this.each(function() {_x000D_
$(this).append(new Option(text, value || '', false, selected || false));_x000D_
});_x000D_
}_x000D_
});_x000D_
});_x000D_
_x000D_
jQuery(function($) {_x000D_
$('#selectBox')_x000D_
.remove_options('option3')_x000D_
.add_option('option5', 'option5', true);_x000D_
});
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<select name="selectBox" id="selectBox">_x000D_
<option value="option1">option1</option>_x000D_
<option value="option2">option2</option>_x000D_
<option value="option3">option3</option>_x000D_
<option value="option4">option4</option> _x000D_
</select>
_x000D_
I just want to suggest another way to add an option
.
Instead of setting the value
and text
as a string one can also do:
var option = $('<option/>')
.val('option5')
.text('option5');
$('#selectBox').append(option);
This is a less error-prone solution when adding options' values and texts dynamically.
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;
}
To add the item I would create second select box and:
var select2 = document.getElementById('selectBox2');
var addSelect = document.getElementById('addSelect');
function add()
{
value1 = select2.selectedIndex;
select.appendChild(select2[value1]);
}
addSelect.onclick = add;
Not jQuery though.
Adding/Removing value dynamically without hard-code:
// remove value from select dynamically
$("#id-select option[value='" + dynamicVal + "']").remove();
// Add dynamic value to select
$("#id-select").append('<option value="' + dynamicVal + '">' + dynamicVal + '</option>');
Just to augment this for anyone looking, you are also able to just:
$("#selectBox option[value='option1']").hide();
and
$("#selectBox option[value='option1']").show();
Source: Stackoverflow.com