i have
<select id="x">
<option v开发者_如何学Pythonalue="5">hi</option>
<option value="7">hi 2</option>
</select>
I want a javascript function that enables me to select and display the <option>
as default one by id. In other words, I want to do a setOption(5)
and the <option>
with the value "5" to be displayed in the combobox as a default .
Is that possible?
If you can, with ES6...
function setOption(selectElement, value) {
return [...selectElement.options].some((option, index) => {
if (option.value == value) {
selectElement.selectedIndex = index;
return true;
}
});
}
...otherwise...
function setOption(selectElement, value) {
var options = selectElement.options;
for (var i = 0, optionsLength = options.length; i < optionsLength; i++) {
if (options[i].value == value) {
selectElement.selectedIndex = i;
return true;
}
}
return false;
}
setOption(document.getElementById('my-select'), 'b');
See it!
If it returns false
, then the value could not be found :)
If someone looking for jquery solution, use the val()
function.
$("#select").val(valueToBeSelected);
In Javascript,
document.getElementById("select").value = valueToBeSelected;
If you are using jQuery (1.6 or greater)
$('#x option[value="5"]').prop('selected', true)
Using Javascript:
document.getElementById('drpSelectSourceLibrary').value = 'Seven';
vanilla JS:
Get index of search value
var index=[...document.getElementByID('name').options].find(o=>o.value==5).index
Set it:
document.getElementByID('name').selectedIndex=index;
So I came across this and thought I'd offer a couple of solutions.
The easiest way for a single select, is just to set the value of the select:
var mySelect = document.getElementById( 'my-select-id' );
mySelect.value = 7;
You can also get the selected option by value just the same way:
console.log( mySelect.value );
What I was looking for was a better way to set the values of a multiselect (<select multiple>...</select>
) but as it turns out - it seems you have to loop through the options, and set them in some kind of for
loop:
function setMultiSelectValues( select, values ) {
for (var i = 0; i < select.options.length; i++) {
var option = select.options[i];
if ( values.includes( option.value ) ) {
option.selected = true;
}
}
}
And then use it like:
var mySelect = document.getElementById( 'my-select-id' );
var myValues = [ 'option-1', 'option-5' ];
setMultiSelect( mySelect , values );
Demo: https://codepen.io/rmorse/pen/QWNymdb
You should not need even javascript to get involved, use simply the selected
attribute:
<select id="x">
<option value="5" selected>hi</option>
<option value="7">hi 2</option>
</select>
精彩评论