JavaScript-多个select 如何使用js 控制select 不能选择重复的值

发布于 2017-07-17 03:56:29 字数 2256 浏览 1278 评论 1

多个select 如何使用js 控制select 不能选择重复的值,在网上找到了一段代码 是控制2个select标签的 但是如果是4个select标签 该怎么写代码

附:网上找到的控制2个select标签不能选择相同的值的代码

<html>
<head>
<title>禁止选择相同值的Select下拉列表</title>
</head>
<script>
var OptLstTxt = new Array;
var OptLstVal = new Array;
var OptLen = 0;
function NoDupl(SelObjFrom, SelObjTo) {
var OldToVal = SelObjTo.options[SelObjTo.selectedIndex].value;
if (OptLen == 0) {
OptLen = SelObjFrom.length;
for (var i = 1; i < OptLen; i++) {
OptLstTxt[i] = SelObjFrom.options[i].text;
OptLstVal[i] = SelObjFrom.options[i].value;
}
}
var j = 1;
for (var i = 1; i < OptLen; i++) {
if (OptLstVal[i] != SelObjFrom.options[SelObjFrom.selectedIndex].value) {
if (j == SelObjTo.length) {
SelObjTo.options[j] = new Option(OptLstTxt[i]);
}
else {
SelObjTo.options[j].text = OptLstTxt[i];
}
SelObjTo.options[j].value = OptLstVal[i];
if (OptLstVal[i] == OldToVal) {
SelObjTo.selectedIndex = j;
}
j++;
}
}
if (SelObjTo.length > j)
SelObjTo.options[(SelObjTo.length - 1)] = null;
}
</script>
</head>
<body>
<form method="POST" name="MForm">
<div align="center">两个下拉框你只能选择不同的值<br>
<select name="Color_1" onChange="NoDupl(this,document.MForm.Color_2)">
<option selected value=''>你的WEB编程语言</option>
<option value='ASP'>ASP</option>
<option value='PHP'>PHP</option>
<option value='JSP'>JSP</option>
<option value='CGI'>CGI</option>
</select>
<select name="Color_2" onChange="NoDupl(this,document.MForm.Color_1)">
<option selected value=''>你的WEB编程语言</option>
<option value='ASP'>ASP</option>
<option value='PHP'>PHP</option>
<option value='JSP'>JSP</option>
<option value='CGI'>CGI</option>
</select>
</div>
</form>
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-09-20 19:19:22

我的想法是:

利用javascript的事件委托机制,在多个select元素的上层元素上绑定一个change事件,这样所有的select只有触发出change事件都会随事件冒泡而被上层容器所捕获。然后你要做的就是将其余select中的相同的option给隐藏掉(应该可以隐藏吧,没测试过)或者是直接跳到--empty--。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文