【发布时间】:2017-03-31 20:40:23
【问题描述】:
嗨,我之前在这里看到过这个问题,但我的问题有所不同,我还没有看到解决方案。我有多个下拉列表,例如让我们说 5。它们都包含相同的选项值,除了第一个选项是从我的 sql 服务器回显的。因此,第一个选项会在所有 5 个下拉菜单中发生变化,但其他名称仍然可用。
<select name="Person1"/>
echo "<option value='$selectedname'>$selectedname</option>";
echo "<option value='Persona'>Persona</option>";
echo "<option value='Personb'>Personb</option>";
echo "<option value='Personc'>Personc</option>";
echo"</select>";
<select name="Person2"/>
echo "<option value='$selectedname2'>$selectedname2</option>";
echo "<option value='Persona'>Persona</option>";
echo "<option value='Personb'>Personb</option>";
echo "<option value='Personc'>Personc</option>";
echo"</select>";
<select name="Person3"/>
echo "<option value='$selectedname3'>$selectedname3</option>";
echo "<option value='Persona'>Persona</option>";
echo "<option value='Personb'>Personb</option>";
echo "<option value='Personc'>Personc</option>";
echo"</select>";
<select name="Person4"/>
echo "<option value='$selectedname4'>$selectedname4</option>";
echo "<option value='Persona'>Persona</option>";
echo "<option value='Personb'>Personb</option>";
echo "<option value='Personc'>Personc</option>";
echo"</select>";
<select name="Person5"/>
echo "<option value='$selectedname5'>$selectedname5</option>";
echo "<option value='Persona'>Persona</option>";
echo "<option value='Personb'>Personb</option>";
echo "<option value='Personc'>Personc</option>";
echo"</select>";
所以我正在尝试做的是,如果“Persona”回显到此选择中,则“Persona”在此下拉列表或其他 4 个下拉列表中将不可用或禁用。下面的代码用于禁用先前选择的值,但这取决于它们在下拉列表中的顺序。这在“Persona”作为下拉列表中的第一个值被回显的情况下不起作用,并且仍然可以在其他下拉列表中被选中。
function id2el(elmt1){return document.getElementById(elmt1);}
id2el("fm1").onchange = function(event) {
if (event.target.tagName.toUpperCase() == "SELECT") {
id2el("s"+event.target.id).innerHTML = event.target.selectedIndex ? event.target.value : "";
var sels = this.getElementsByTagName('select'), goo = 0, oldIn = 0;
for (var i =0; i< sels.length; ++i) {
if (goo) {
if (event.target.selectedIndex) {
sels[i].options[event.target.selectedIndex].disabled = true;
if (sels[i].selectedIndex == event.target.selectedIndex) {id2el("s"+sels[i].id).innerHTML = "";
sels[i].oldIndex8 = 0; sels[i].selectedIndex = 0;}
}
if(oldIn) sels[i].options[oldIn].disabled = false;
}
if(sels[i] == event.target) {goo=1; if(event.target.oldIndex8) oldIn = event.target.oldIndex8}
}
event.target.oldIndex8 = event.target.selectedIndex;
}
}
【问题讨论】:
-
这个answer 似乎解决了您正在寻找的问题?
-
嗨,是的,这与我上面的代码的作用相同。我正在寻找的不同之处在于我计划将名称呼应到第一个选项中。该名称也将出现在下拉列表中,这意味着它会出现两次。因此,如果角色回显到下拉列表中,我想禁用下拉列表中角色的其他值。
标签: javascript jquery drop-down-menu