两个select,要求两个select选项不能选择相同的

nongying_99 2008-04-08 04:44:25
<script language="JavaScript">
function is(){
var m1=document.tradeSellForm.a.selectedIndex;
var m2=document.tradeSellForm.b.selectedIndex;
if(m1=m2){ document.tradeSellForm.b.options.remove(m2);}
}
</script>
<body>
<form name="tradeSellForm">
<select name="a" onchange=is()>
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
</select>

<select name="b">
<option value="0">A</option>
<option value="1">B</option>
<option value="2">C</option>
</select>
</form>
</body>
当选择前面一个select的A时候,要求后面一个select选项中就不存在A选项,依次类推,也就是说两个select中不能选择相同的值,这个要怎么实现
...全文
1089 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nongying_99 2008-04-21
  • 打赏
  • 举报
回复
您写的为什么在火狐下不好使啊,是怎么回事呢
游北亮 2008-04-21
  • 打赏
  • 举报
回复
简单做了一下:
<script language="JavaScript"> 
// 这个数组存放所有的Option选项
var arr = new Array(new Array("A","0"),
new Array("B","1"),
new Array("C","2"),
new Array("D","3"),
new Array("E","4")
);
function ck(obj){
var to;
if(obj.name == "a" || obj.id == "a"){
to = document.getElementById("b");
} else {
to = document.getElementById("a");
}

to.length = 0;
for(var i=0;i<arr.length;i++){
if(obj.selectedIndex < 0 || arr[i][1] != obj.options[obj.selectedIndex].value){
var opn = new Option(arr[i][0],arr[i][1]);
to.options.add(opn);
}
}
to.selectedIndex = 0;
}
</script>
<body onload="ck(document.getElementById('b'));ck(document.getElementById('a'));">
<form>
<select name="a" onchange="ck(this)">
</select>

<select name="b" onchange="ck(this)">
</select>
</form>
</body>
t88266236 2008-04-21
  • 打赏
  • 举报
回复
如果只是要求第二个变化,第一个不变的话
你可以将第二个的选项放到数组中,
然后根据第一个下拉列表的选择项来动态的为第二个下拉列表添加选项

代码就不写了。。。
s_liangchao1s 2008-04-21
  • 打赏
  • 举报
回复

<script language="JavaScript">
function ck(sel){
alert(sel.options[sel.selectedIndex].text);
document.forms[0].b.options.remove(sel.options[sel.selectedIndex].value);

}

</script>
<body>
<form name="tradeSellForm">
<select name="a" onchange="ck(this)">
<option value="0">A </option>
<option value="1">B </option>
<option value="2">C </option>
</select>

<select name="b" >
<option value="0">A </option>
<option value="1">B </option>
<option value="2">C </option>
</select>
</form>
</body>


lawrendc 2008-04-21
  • 打赏
  • 举报
回复
这个问题以前有人问过
cbhdgvt 2008-04-09
  • 打赏
  • 举报
回复
那么基本的思路就是第一个下拉框中触发一个onselectionchange 事件,再这个事件中获得第一个下拉中的selectedItem,然后遍历第二个下拉框,如果有相同的item则remove
3楼的代码很清晰了
nongying_99 2008-04-09
  • 打赏
  • 举报
回复
可是这是一项一项的删除啊,我选择了第一个select的值A的时候,第二个select里只有B,C两个选项了,可是如果我现在又不想选A了,我选B,要求选项里面还有A,C
redleaf1995 2008-04-08
  • 打赏
  • 举报
回复
function is(){
//var m1=document.tradeSellForm.a.selectedIndex;
//var m2=document.tradeSellForm.b.selectedIndex;
//if(m1==m2){ document.tradeSellForm.b.options.remove(m2);}

var m1 = document.tradeSellForm.a.value;

var obj_b = document.tradeSellForm.b;
for(var i = 0; i < obj_b.options.length; i++)
{
if(obj_b.options[i].value == m1)
{
obj_b.options.remove(i);
return;
}
}
}
nongying_99 2008-04-08
  • 打赏
  • 举报
回复
比如说第一个select里面选择A了,第二个select里面就没有A这个选项了,我想要的是这样的效果
hookee 2008-04-08
  • 打赏
  • 举报
回复 2

<script language="JavaScript">
var cur;
function ck(sel){
var m1=document.tradeSellForm.a.selectedIndex;
var m2=document.tradeSellForm.b.selectedIndex;
if(m1==m2){
alert("不能相同");
sel.selectedIndex = cur;
}
}
</script>
<body>
<form name="tradeSellForm">
<select name="a" onfocus="cur=this.selectedIndex;" onchange="ck(this)">
<option value="0">A </option>
<option value="1">B </option>
<option value="2">C </option>
</select>

<select name="b" onfocus="cur=this.selectedIndex;" onchange="ck(this)">
<option value="0">A </option>
<option value="1" selected="true">B </option>
<option value="2">C </option>
</select>
</form>
</body>

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧