How to change a <select> value from JavaScript

JavascriptHtml

Javascript Problem Overview


I have question that seems very simple, but I just can't get it right. I have a <select> with a list of options and a default value. After the user selects an option and clicks on a button, I want the select to go back to its default value.

<select id="select">
 <option value="defaultValue">Default</option>
 <option value="Option1">Option1</option>
 <option value="Option2">Option2</option>    
</select>
<input type="button" value="CHANGE" onclick="selectFunction()" />

So lets suppose the user selects Option 1. I get that value with javascript but after that, I want the select to show again "Default".

I found that doing document.getElementById("select").value = "defaultValue" won't work.

Does anyone know how to change that value back to the default?

Javascript Solutions


Solution 1 - Javascript

Setting .value to the value of one of the options works on all vaguely-current browsers. On very old browsers, you used to have to set the selectedIndex:

document.getElementById("select").selectedIndex = 0;

If neither that nor your original code is working, I wonder if you might be using IE and have something else on the page creating something called "select"? (Either as a name or as a global variable?) Because some versions of IE have a problem where they conflate namespaces. Try changing the select's id to "fluglehorn" and if that works, you know that's the problem.

Solution 2 - Javascript

> I found that doing document.getElementById("select").value = "defaultValue" wont work.

You must be experiencing a separate bug, as this works fine in this live demo.

And here's the full working code in case you are interested:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>Demo</title>
    <script type="text/javascript">
        var selectFunction = function() {
            document.getElementById("select").value = "defaultValue";
        };
    </script>
</head>
<body>
    <select id="select">
        <option value="defaultValue">Default</option>
        <option value="Option1">Option1</option>
        <option value="Option2">Option2</option>    
    </select>
    <input type="button" value="CHANGE" onclick="selectFunction()" />
</body>
</html>

Solution 3 - Javascript

$('#select').val('defaultValue'); 
$('#select').change();

This will also trigger events hooked to this select

Solution 4 - Javascript

document.getElementById("select").selectedIndex = 0 will work

Solution 5 - Javascript

Once you have done your processing in the selectFunction() you could do the following

document.getElementById('select').selectedIndex = 0;
document.getElementById('select').value = 'Default';

Solution 6 - Javascript

If you would like it to go back to first option try this:

   document.getElementById("select").selectedIndex = 0;

Solution 7 - Javascript

I think I know what the problem is here - if you are trying to have it select an option that doesn't exist, it won't work. You need to ADD the option first. Like so:

var option=document.createElement("option");
option.text=document.getElementById('other_referee').value
document.getElementById('referee_new').add(option,null);
document.getElementById('referee_new').value = document.getElementById('other_referee').value;

Not elegant, but you get the idea.

Solution 8 - Javascript

 <script language="javascript" type="text/javascript">
        function selectFunction() {
             var printStr = document.getElementById("select").options[0].value
            alert(printStr);
            document.getElementById("select").selectedIndex = 0;
        }
    </script>

Solution 9 - Javascript

You can use the selectedIndex property to set it to the first option:

document.getElementById("select").selectedIndex = 0;

Solution 10 - Javascript

This solved my issue, it was working fine with

var value = item[index].id;
$("#select2").val(value);

but not showing selected value, so

$("#select2").val(value).change();

OR

$("#select2").val(value).trigger('change');

works fine for me.

Solution 11 - Javascript

HTML

<div class="form-group" id="divnacionalidad">                                                               
    <label>Nacionalidad:</label>                                                            
    <select id="nacionalidad" class="form-control">                                                               
        <option value="0">Seleccione una opcion</option>
        <option value="2">Costa Rica</option>
        <option value="1">Nicaragua</option>
    </select>
</div>

Javascript:

function buscarIndice(caden, valor) {
    let cadena = document.getElementById(caden);
    for (let i = 0; i < cadena.children.length; i++) {
        if (cadena.children.item(i).textContent.trim() === valor.trim()) {
            cadena.options.item(i).selected = 'selected';
        }
    }
}

Solution 12 - Javascript

We can iterate the option to find and set the selected attribute on the respective option.

document.getElementsById('select').childNodes.forEach((e, i, a) => {
    if (e.value == "<the value you want to be selected>") {
        e.selected = "selected";
    }
});

For the original option just use its value content.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmauguerraView Question on Stackoverflow
Solution 1 - JavascriptT.J. CrowderView Answer on Stackoverflow
Solution 2 - JavascriptDarin DimitrovView Answer on Stackoverflow
Solution 3 - JavascriptsdoooView Answer on Stackoverflow
Solution 4 - JavascriptShiplu MokaddimView Answer on Stackoverflow
Solution 5 - Javascriptdarren102View Answer on Stackoverflow
Solution 6 - JavascriptfilypeView Answer on Stackoverflow
Solution 7 - JavascriptJordan EdwardsView Answer on Stackoverflow
Solution 8 - JavascriptThit Lwin OoView Answer on Stackoverflow
Solution 9 - JavascriptBrad FalkView Answer on Stackoverflow
Solution 10 - JavascriptTayyab HayatView Answer on Stackoverflow
Solution 11 - Javascriptalfredo evaView Answer on Stackoverflow
Solution 12 - Javascriptbeppe9000View Answer on Stackoverflow