Reset select value to default
I have select box
<select id="my_select">
<option value="a">a</option>
<option value="b" selected="selected">b</option>
<option value="c">c</option>
</select>
<div id="reset">
reset
</div>
I have also reset button, here default (selected) value is "b", suppose I select "c" and after I need resert select box value to default, how to make this using jquery?
$("#reset").on("click", function () {
// What do here?
});
jsfiddle: http://jsfiddle.net/T8sCf/1/
Solution 1:
You can make use of the defaultSelected
property of an option element:
Contains the initial value of the
selected
HTML attribute, indicating whether the option is selected by default or not.
So, the DOM interface already keeps track which option was selected initially.
$("#reset").on("click", function () {
$('#my_select option').prop('selected', function() {
return this.defaultSelected;
});
});
DEMO
This would even work for multi-select elements.
If you don't want to iterate over all options, but "break" after you found the originally selected one, you can use .each
instead:
$('#my_select option').each(function () {
if (this.defaultSelected) {
this.selected = true;
return false;
}
});
Without jQuery:
var options = document.querySelectorAll('#my_select option');
for (var i = 0, l = options.length; i < l; i++) {
options[i].selected = options[i].defaultSelected;
}
Solution 2:
$('#my_select').get(0).selectedIndex = 1;
But, In my opinion, the better way is using HTML only (with <input type="reset" />
):
<form>
<select id="my_select">
<option value="a">a</option>
<option value="b" selected="selected">b</option>
<option value="c">c</option>
</select>
<input type="reset" value="reset" />
</form>
- Check the jsFiddle Demo.
Solution 3:
$("#reset").on("click", function () {
$("#my_select").val('b');//Setting the value as 'b'
});
Solution 4:
Why not use a simple javascript function and call it on onclick event?
function reset(){
document.getElementById("my_select").selectedIndex = 1; //1 = option 2
}
Solution 5:
You can use the data
attribute of the select
element
<select id="my_select" data-default-value="b">
<option value="a">a</option>
<option value="b" selected="selected">b</option>
<option value="c">c</option>
</select>
Your JavaScript,
$("#reset").on("click", function () {
$("#my_select").val($("#my_select").data("default-value"));
});
http://jsfiddle.net/T8sCf/10/
UPDATE
If you don't know the default selection and if you cannot update the html, add following code in the dom ready ,
$("#my_select").data("default-value",$("#my_select").val());
http://jsfiddle.net/T8sCf/24/