JSP表单select多级联动问题

这篇博客探讨了在JSP中使用Ajax实现多级联动下拉框的问题,通过Ajax获取所有数据并填充到select选项,然后通过js函数实现联动效果。两种方式分别是逐级Ajax请求和一次性获取所有数据进行js控制,文中选择了后者,因为它速度快且实用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:每次都要定义branch1,branch2,branch3,这样避免变量全局局部的问题

<tr>

         <td>一级部门:</td>

         <td><selectοnchange="getbranch1()" id="branch1"name="branch1_no"></select></td>

         <td>二级部门:</td>

         <td><selectοnchange="getbranch2()" id="branch2"name="branch2_no"></select></td>

         <td>三级部门:</td>

         <td><selectid="branch3" name="branch3_no"></select></td>

</tr>

Branch1,branch2,branch3这三级联动,

方式有两种,一种是ajax一级,一级选择->ajax二级,二级选择->ajax三级,三级选择,这样需要ajax传递三次数据到后台

另一种是,ajax一级,二级,三级数据到jsp,然后js函数控制联动筛选显示,本项目采用的是第二种,速度快,更实用。

(1)ajax拿到所有数据

functionbranchlist(){

         $.ajax({

         type:"POST",

         url:"branchAction.action",

         dataType:"json",

         data:"",

         success: function(json){

         list1 = json.branch1list;

         list2 = json.branch2list;

         var branch1=$("#branch1")[0];

         branch1.options.length=0;

         branch1.options.add(new Option("所有一级部门","0"));

         var branch2=$("#branch2")[0];

         branch2.options.length=0;

         branch2.options.add(new Option("所有二级部门","00"));

         var branch3=$("#branch3")[0];

         branch3.options.length=0;

         branch3.options.add(new Option("所有三级部门","000"));

         for(var i=0;i<list1.length;i++){

         var option= newOption(list1[i].branch,list1[i].branch_no);

         branch1.options.add(option);

         }

         selRefresh("branch1");

         selRefresh("branch2");

         selRefresh("branch3"); }

         })

}

(2)js函数判断联动

functiongetbranch1(){

//根据选择的branch1的值,branch2需要载入的数据联动变化

         var branch1=$("#branch1")[0];

         var branch2=$("#branch2")[0];

         var branch3=$("#branch3")[0];

         document.all.branch2.options.length =1;

         document.all.branch3.options.length =1;

         var firstno=branch1.options[branch1.options.selectedIndex].value;

         if(firstno != "000")

         {

                   for(vari=0;i<list2.length;i++){

                   var funo =(list2[i].branch_no).substring(0,3);

                   if(funo = firstno)

                   {

                            var option= newOption(list2[i].branch,list2[i].branch_no);

                            branch2.options.add(option);

                   }

                   }

         }

         else{

                   document.all.branch2.options.length= 1;

                   document.all.branch3.options.length= 1;

         }

         selRefresh("branch2");

         selRefresh("branch3");

}

 

functiongetbranch2(){

         //根据选择的branch2的值,branch3需要载入的数据联动变化

         var branch2=$("#branch2")[0];

         var branch3=$("#branch3")[0];

         document.all.branch3.options.length =1;

         var secondno= branch2.options[branch2.options.selectedIndex].value;

         if(secondno != "000")

         {

         for(var i=0;i<list3.length;i++){

         var funo =(list3[i].branch_no).substring(0,6);

         if(funo == secondno)

         {

                   var option= newOption(list3[i].branch,list3[i].branch_no);

                   branch3.options.add(option);

         }

         }

         }

         else{

                   document.all.branch3.options.length= 1;

         }

         selRefresh("branch3");

}

 

ajax传递参数的方式:

$.ajax({

         type: "POST",

         url: "<%=path%>/xxxAction.action",

         dataType:"json",

         data:"startIndex="+startIndex+"&endIndex="+endIndex+"&branchno="+branchno+"&flag="+flag,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值