在先前的下拉列表中选择一个选项后删除它

时间:2011-12-28 10:41:02

标签: php javascript select drop-down-menu option

我需要删除在上一个dropdwon中选择的下拉列表中的所选选项。 例如,第一个,第二个和第三个下拉列表包含A,B,C,D。一旦我在dropdown1中选择了A,它就不会出现在下拉列表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>";
}

然后javascript函数callSave:

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 :(得分:0)

Here是纯HTML / JS示例。基本上在页面加载时,每个select都有相同的选项。当您选择某些内容时,在其他选择中此选项会隐藏。

答案 1 :(得分:0)

Lolo的代码非常正常,但我需要更改style.dispaly = 'none'中的o.disabled = true以避免OSX和iOS中的Chrome / Safari出现问题(元素未隐藏)

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

行为不同但结果相同。