两个下拉框,取同一组数据,第二个框中不显示第一框中已选值

slysmart 2013-09-09 04:12:56
      <select>
<%
Set conn=Server.CreateObject("ADODB.Connection")
DBPath1=server.mappath("../db/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1
set rs=conn.execute("select a from b")
do while not rs.eof
%>
<option><%=rs("a")%></option>
<%
rs.movenext
loop
%>
</select>
<select>
<%
rs.movefirst
do while not rs.eof
%>
<option><%=rs("a")%></option>
<%
rs.movenext
loop
%>
</select>

需要用jquery?,大家有没有类似例子?
...全文
378 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
slysmart 2013-09-10
  • 打赏
  • 举报
回复
我的写法还是有问题
slysmart 2013-09-10
  • 打赏
  • 举报
回复
引用 7 楼 xzy21com 的回复:
小功能就不要使用jquery:
<%
Dim list
Set conn=Server.CreateObject("ADODB.Connection")
DBPath1=server.mappath("../db/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1
set rs=conn.execute("select a from b")
do while not rs.eof   
   list=list&"<option>"&rs("a")&"</option>"
   rs.movenext
Loop
Rs.Close:Set Rs=Nothing
Response.write "<select id='scs' onchange='mselect()'>"&list&"</select>"
Response.write "<select id='scscms'>"&list&"</select>"
%>
<script type="text/javascript">
var option="";
function mselect(){
    var scs=document.getElementById("scs");
    var scscms=document.getElementById("scscms");
    var n=scs.selectedIndex;
    for(var i =0;i<scscms.options.length; i++){
        if(scs.options[n].text==scscms.options[i].text)
        scscms.options.remove(i);
    }
    if(option!="")scscms.add(option);
    option=new Option(scs.options[n].text,"");
}
mselect();
</script>
的确,这么写我倒是还能看的懂。按照你的修改了下(相互排除),效果是对的,但如果要是多个select,id命名按照sel1,sel2,...sel6,写个循环该如何写
function mselect(){
    var scs=document.getElementById("scs");
    var scscms=document.getElementById("scscms");
    var n=scs.selectedIndex;
	var m=scscms.selectedIndex;
    for(var i =0;i<scscms.options.length; i++){
        if(scs.options[n].text==scscms.options[i].text)
        scscms.options.remove(i);
    }
	if(option!="")scscms.add(option);
      option=new Option(scs.options[n].text,"");
	for(var i =0;i<scs.options.length; i++){
        if(scscms.options[m].text==scs.options[i].text)
        scs.options.remove(i);
    }
}
mselect();
</script>
scscms太阳光 2013-09-10
  • 打赏
  • 举报
回复
小功能就不要使用jquery:
<%
Dim list
Set conn=Server.CreateObject("ADODB.Connection")
DBPath1=server.mappath("../db/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1
set rs=conn.execute("select a from b")
do while not rs.eof   
   list=list&"<option>"&rs("a")&"</option>"
   rs.movenext
Loop
Rs.Close:Set Rs=Nothing
Response.write "<select id='scs' onchange='mselect()'>"&list&"</select>"
Response.write "<select id='scscms'>"&list&"</select>"
%>
<script type="text/javascript">
var option="";
function mselect(){
    var scs=document.getElementById("scs");
    var scscms=document.getElementById("scscms");
    var n=scs.selectedIndex;
    for(var i =0;i<scscms.options.length; i++){
        if(scs.options[n].text==scscms.options[i].text)
        scscms.options.remove(i);
    }
    if(option!="")scscms.add(option);
    option=new Option(scs.options[n].text,"");
}
mselect();
</script>
slysmart 2013-09-10
  • 打赏
  • 举报
回复
引用 5 楼 wzs_xyz 的回复:
var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); sel1.change();//加一句
谢谢未知数, 还是没反应,真心不会改
scscms太阳光 2013-09-10
  • 打赏
  • 举报
回复
while(OtherSelArr[selid+1].options.length)//统计options还有多少个 { OtherSelArr[selid+1].remove(0);//删除第一个option } //简单讲就是循环删除下拉菜单的第一个,直到全部删除为止。就是这意思
slysmart 2013-09-10
  • 打赏
  • 举报
回复
引用 11 楼 xzy21com 的回复:
汗颜!你怎么不直接问主题,而是转个角问问题。首先while(条件){}当条件为真时就一直执行代码。不了解直接去百度学学。至于你要生成sel1,sel2,...sel6多个下拉框,而且是选项一个个递减效果可这样做。
<%
Dim list
Set conn=Server.CreateObject("ADODB.Connection")
DBPath1=server.mappath("../db/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1
set rs=conn.execute("select a from b")
do while not rs.eof   
   list=list&",'"&rs("a")&"'"
   rs.movenext
Loop
Rs.Close:Set Rs=Nothing
%>
<script type="text/javascript">
    var txt=[<%=list%>];//下拉菜单文本
    var num=6;//生成几级下拉菜单(从0算起,但不可超出数组下标)
    var i_all=num>txt.length-1?txt.length-1:num;//判断是否超出数组下标
    var str="";
    for(var i=0;i<=i_all;i++){
        if(i<i_all){
            str+='<select name="sel'+i+'" onchange="option('+i+')" id="sel'+i+'">';
        }else{
            str+='<select name="sel'+i+'" id="sel'+i+'">';
        }
        if(i==0){
            for(var n=0;n<txt.length;n++){
                str+='<option>'+txt[n]+'</option>';
            }
        }
        str+='</select>';
    }
    document.getElementById("list").innerHTML=str;
    function option(i){
        if(i>=i_all)return;
        var obj=document.getElementById("sel"+i);
        var opt=obj.options;
        var thi=document.getElementById("sel"+(i+1));
        thi.innerHTML="";
        for(var n=0;n<opt.length;n++){
            if(n!=obj.selectedIndex){
                str = new Option(opt[n].text,"");
                thi.options.add(str);
            }
        }
        if(i+1<i_all)option(i+1);
    }
    option(0);
</script>
参考文章:http://www.scscms.com/html/article/2012-1171321522.html
非常谢谢你的解答,关于上个问题,我解释下,我想问的是这个条件是什么意思? 条件本身我没看懂,并不是不知道while(条件){}当条件为真时就一直执行代码 while(OtherSelArr[selid+1].options.length) { OtherSelArr[selid+1].remove(0); } selid为参数
scscms太阳光 2013-09-10
  • 打赏
  • 举报
回复
汗颜!你怎么不直接问主题,而是转个角问问题。首先while(条件){}当条件为真时就一直执行代码。不了解直接去百度学学。至于你要生成sel1,sel2,...sel6多个下拉框,而且是选项一个个递减效果可这样做。
<%
Dim list
Set conn=Server.CreateObject("ADODB.Connection")
DBPath1=server.mappath("../db/db.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath1
set rs=conn.execute("select a from b")
do while not rs.eof   
   list=list&",'"&rs("a")&"'"
   rs.movenext
Loop
Rs.Close:Set Rs=Nothing
%>
<script type="text/javascript">
    var txt=[<%=list%>];//下拉菜单文本
    var num=6;//生成几级下拉菜单(从0算起,但不可超出数组下标)
    var i_all=num>txt.length-1?txt.length-1:num;//判断是否超出数组下标
    var str="";
    for(var i=0;i<=i_all;i++){
        if(i<i_all){
            str+='<select name="sel'+i+'" onchange="option('+i+')" id="sel'+i+'">';
        }else{
            str+='<select name="sel'+i+'" id="sel'+i+'">';
        }
        if(i==0){
            for(var n=0;n<txt.length;n++){
                str+='<option>'+txt[n]+'</option>';
            }
        }
        str+='</select>';
    }
    document.getElementById("list").innerHTML=str;
    function option(i){
        if(i>=i_all)return;
        var obj=document.getElementById("sel"+i);
        var opt=obj.options;
        var thi=document.getElementById("sel"+(i+1));
        thi.innerHTML="";
        for(var n=0;n<opt.length;n++){
            if(n!=obj.selectedIndex){
                str = new Option(opt[n].text,"");
                thi.options.add(str);
            }
        }
        if(i+1<i_all)option(i+1);
    }
    option(0);
</script>
参考文章:http://www.scscms.com/html/article/2012-1171321522.html
slysmart 2013-09-10
  • 打赏
  • 举报
回复
找了段代码,其中这句看不明白,while循环条件什么? while(OtherSelArr[selid+1].options.length) { OtherSelArr[selid+1].remove(0); }
未知数 2013-09-09
  • 打赏
  • 举报
回复
var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); sel1.change();//加一句
slysmart 2013-09-09
  • 打赏
  • 举报
回复
引用 3 楼 wzs_xyz 的回复:
[quote=引用 2 楼 slysmart 的回复:] [quote=引用 1 楼 wzs_xyz 的回复:] <select id='sel1'>... <select id='sel2'>... <script> var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); </script>
加了id,再把js代码放到<body>中,没反应[/quote] 需引入jquery, script节点放body标签后面 看你的回帖似乎是想拿到代码放上去就ok,哪有这么好的事,自己思考一下不是很好么?[/quote] 由于没有了解过jquery,所以不知道 <script src="jquery1.2.6.min.js"></script> //这个文件我本地有 放到head中,运行还是没反应
未知数 2013-09-09
  • 打赏
  • 举报
回复
引用 2 楼 slysmart 的回复:
[quote=引用 1 楼 wzs_xyz 的回复:] <select id='sel1'>... <select id='sel2'>... <script> var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); </script>
加了id,再把js代码放到<body>中,没反应[/quote] 需引入jquery, script节点放body标签后面 看你的回帖似乎是想拿到代码放上去就ok,哪有这么好的事,自己思考一下不是很好么?
slysmart 2013-09-09
  • 打赏
  • 举报
回复
引用 1 楼 wzs_xyz 的回复:
<select id='sel1'>... <select id='sel2'>... <script> var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); </script>
加了id,再把js代码放到<body>中,没反应
未知数 2013-09-09
  • 打赏
  • 举报
回复
<select id='sel1'>... <select id='sel2'>... <script> var sel1 = $('#sel1'),sel2=$('#sel2'); sel1.change(function(){ var val = $(this).val(); sel2.find('option').show(); sel2.find('option[value='+val+']').hide(); }); </script>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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