Javascript - комбинированный список изменения значения другого комбинированного списка - PullRequest
2 голосов
/ 02 июня 2011

У меня есть 2 комбинированных списка на форме.Каждый из них имеет значения Да и Нет. То, что я хочу, это когда один меняется, другой получает противоположное (если первый - Да, другой - Нет). Мне нужно сделать это с помощью JavaScript.Я видел этот вопрос Как изменить «выделенное» значение в комбинированном списке с помощью JavaScript? , но оно применяется только к одному комбинированному списку.

Как я могу это сделать?

Л.Э .: Мне нужен этот пример, чтобы сделать с помощью выпадающих списков.Я не могу использовать радио кнопки

Ответы [ 3 ]

6 голосов
/ 02 июня 2011

Я создал простую jsFiddle Demo .Это не идеально, просто иллюстрирует идею.

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);
4 голосов
/ 02 июня 2011

Я считаю, что это то, что вы ищете:

<select id="combo1" onchange="FlipOtherCombo(this, 'combo2')">
    <option value="yes">yes</option>
    <option value="no">no</option>
</select>
<select id="combo2" onchange="FlipOtherCombo(this, 'combo1')">
    <option value="yes">yes</option>
    <option selected="selected" value="no">no</option>
</select>

<script>
    function FlipOtherCombo(objCombo, strOtherComboId){
        if (objCombo.value ==="yes"){
            document.getElementById(strOtherComboId).value = "no";
        } else {
            document.getElementById(strOtherComboId).value = "yes";
        }
    }
</script>

Также на это JSFiddle.

Хотя, с помощью переключателей для простых вариантов да / неткак это лучше.

2 голосов
/ 02 июня 2011

Вот моя собственная попытка работы со значениями да / нет ..

HTML

<select name="combo1" id="combo1">
    <option value="Yes">Yes</option>
    <option value="No">No</option>
</select>
<br /><br />
<select name="combo2" id="combo2">
    <option value="Yes">Yes</option>
    <option value="No">No</option>
</select>

Javascript

window.onload = function() { BindEvent(); }

function BindEvent()
{
    var c1 = document.getElementById ( 'combo1' );
    var c2= document.getElementById ( 'combo2' );

    c1.onchange = invert;
    c2.onchange = invert;

    c1.onchange(); //initialize
}

function invert() {
         var otherElem = document.getElementById( (this.id=='combo1')? 'combo2' : 'combo1');
         otherElem.value = (this.value=='Yes')?'No':'Yes';
    }

демо http://jsfiddle.net/gaby/7Ujh2/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...