Удалить параметр, если он выбран в предыдущих выпадающих списках - PullRequest
0 голосов
/ 28 декабря 2011

Мне нужно удалить выбранную опцию в раскрывающемся списке, который был выбран в предыдущем выпадающем списке. Например, первый, второй и третий раскрывающиеся списки содержат A, B, C, D. После того, как я выбрал A в раскрывающемся списке 1, он не появится в обоих раскрывающихся списках 2 и 3. То же самое произойдет с обоими раскрывающимися списками 2 и 3.

Но в моем коде все на самом деле так:

У меня есть несколько выпадающих списков в PHP.

for($y=1; $y<=5; $y++){
echo "<select id='seatplan$x' name='selectSeatplan[]' onChange='callSave($x,$sid)'>";

     echo "<select name='selectSeatplan[]'>";
     echo "<option value=''> ------------ </option>";
          seatplanDdNames($sid);
     echo "</select>";

} //END FOR Y<-5

Обратите внимание, что * seatplanDdNames ($ sid) - это функция, в которой имена генерируются из базы данных, и вот как я отображаю параметры из нее:

function seatplanDdNames($sid) {
     echo "<option value='$studentno' onClick='callSave($x,$sid)'>$name</option>";
}

Тогда функция вызова javascriptSave:

function callSave(x,sid){

    var name = 'seatplan' + x;
    name = name.toString();
    var selectBox = document.getElementById(name);
    var strUser = selectBox.options[selectBox.selectedIndex].value;
    var js = document.createElement('script');
        js.setAttribute('language', 'javascript');
        js.setAttribute('type', 'text/javascript');
        js.setAttribute('src', 'seatplan-getvalues.php?uid='+strUser+'&sid='+sid+'&rtype=CLS&seatno='+x);
    document.body.appendChild(js);

    return false;
    } 
  • Функция callSave сохраняет выбранную опцию во временной таблице. Просто, как мне это нравится. Проблема в том, что я должен избегать избыточности данных, представленных в раскрывающихся списках.

Любая помощь? Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 сентября 2014

Код от Lolo работает очень хорошо, но мне нужно было изменить style.dispaly = 'none' в o.disabled = true, чтобы избежать проблемы с Chrome / Safari в OSX и iOS (элемент не скрыт) * ​​1003 *

if (p == undefined || p == s) {
  o.disabled = false;
}
// option otherwise
else {
  o.disabled = true;
}

Поведение отличается, но результат тот же.

0 голосов
/ 28 декабря 2011

Здесь - пример чистого HTML / JS. В основном при загрузке страницы каждый выбор имеет одинаковые параметры. Когда вы выбираете что-то, на других выбирает этот параметр скрывает.

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