Search code examples
javascriptcomboboxdom-events

Combobox change value of other combobox


I have two comboboxes on an form. Each has the values Yes and No. What I want is when one is changed the other get the opposite (if the first is Yes the other is No).I need to do it with Javascript. I saw this question How to change "selected" value in combobox using JavaScript? but it is applied to only one combobox.

How can I do this?

LE:I need this example to be make with comboboxes. I can not use radio buttons


Solution

  • I created a simple jsFiddle Demo. This is not perfect, just illustrates the idea.

    HTML:

    <select id="first">
        <option value="0" selected>No</option>
        <option value="1">Yes</option>
    </select>
    
    <select id="second">
        <option value="0">No</option>
        <option value="1" selected>Yes</option>
    </select>
    

    Javascript:

    //find the selects in the DOM
    var first = document.getElementById('first');
    var second = document.getElementById('second');
    
    //this is the handler function we will run when change event occurs
    var handler = function () {
        //inside the handler, "this" should be the select 
        //whose change event we are currently handling
    
        //get the current value and invert it (0 -> 1, 1 -> 0)
        var invertedValue = this.value === '0' ? 1 : 0;
    
        //check which select's change we are currently handling
        //and set the inverted value as the other select's value
        if (this === first) {
            second.value = invertedValue;
        } else {
            first.value = invertedValue;
        }
    
    };
    
    //add handler function to run on change event on both selects
    first.addEventListener('change', handler, false);
    second.addEventListener('change', handler, false);