欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

前端HTML+JS实现四级联动

程序员文章站 2022-04-28 09:40:16
...

第一次写博客,为了更好的记录自己做项目遇到的问题和解决方法。
最近在做一个项目,其中一个功能需要实现四级联动。联动功能是一个比较常用的功能,实现的方式有很多,下面分享一个比较清晰简单的方法。
实现效果如下:
前端HTML+JS实现四级联动

前端HTML+JS实现四级联动

前端HTML+JS实现四级联动

前端HTML+JS实现四级联动

前端HTML+JS实现四级联动

一、JS代码

var xmlHttp;
var selId;
//创建一个xmlHttp 对象
function createXMLHttpRequest(){
if(window.ActiveXObject){//检查浏览器是否支持 XMLHttpRequest 对象
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//不支持 创建
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();//支持 直接new
}
}
//选这个option后 想要的option能级联
function getOptionById(val){
var url="${ctx}/business/screening/ziji.action?";
var data="parentId="+val.value;        //传入后台的参数
selId=val.id;
ajaxRequest(url,data,responseData);    //实质要调用的ajax的函数
}
//ajaxRequest是将请求发送到后台的function
function ajaxRequest(url,data,responseResult){
createXMLHttpRequest();//调用 创建一个XMLHttpRequest对象
xmlHttp.open("POST",url,true);//规定请求的类型(post)、URL 以及是否异步处理请求(是)
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//类似HTML 表单那样 POST 数据 的http头
xmlHttp.onreadystatechange = responseResult;//规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数
xmlHttp.send(data);//发送数据
}
//后台响应完成后执行的function
function responseData(){
    if(xmlHttp.readyState == 4){//4表示请求已完成 ,响应已就绪
    if(xmlHttp.status == 200){//表示ok
    var message=xmlHttp.responseText;//为后台返回过来的文本
    var num =1;
    if(message=="null"){//若没有返回任何信息
        document.getElementById(""+selId+num+"").options.length=1;   //把id='id'的option下拉框置空
    return false;
    }
    else{
     var info2 =eval("("+message+")");  //解析一下json字符串
     document.getElementById(""+selId+num+"").options.length=1;   //把id='id'的option下拉框置空
    $.each(info2, function(i,n){
        $("#"+selId+num+"").append($('<option value="'+i+'">'+n+'</option>'));      //后台数据加到下拉框

    });
     } 
    }
    }
}

二、HTML代码

<tr>
           <td class="columnTitle_mustbe">风险大类ID:</td>
           <td class="tableContent">
           <select name="sel1"  id="sel1"  class="select_field" onchange="getOptionById(this)">
                <option value="">-请选择-</option>
                <c:forEach items="${riskStockDaLei}" var="o" varStatus="status">
                    <option value="${o.id}">${o.name}</option>
                </c:forEach>
            </select><font> * </font>
           </td>
       </tr>
       <tr>
           <td class="columnTitle_mustbe">风险专项ID:</td>
           <td class="tableContent">
           <select name="sel11" id="sel11" class="select_field" onchange="getOptionById(this)">
                <option value="">请选择</option>
            </select><font> * </font>
           </td>
       </tr>
        <tr>
           <td class="columnTitle_mustbe">风险分项ID:</td>
           <td class="tableContent">
           <select name="sel111"  id="sel111" class="select_field" onchange="getOptionById(this)">
                 <option value="">-请选择-</option>
            </select><font> * </font>
           </td>
       </tr>
        <tr>
           <td class="columnTitle_mustbe">风险描述ID:</td>
           <td class="tableContent">
           <select name="sel1111"  id="sel1111" class="select_field" onchange="getOptionById(this)">
                 <option value="">-请选择-</option>
            </select><font> * </font>
           </td>
       </tr>