<返回更多

JavaScript实现select联动

2022-07-30    一点鑫得
加入收藏

本文介绍如何实现select下拉选项的联动效果,用户及部门信息一般是通过后端读取数据库返回的,用户一般都会属于某个部门,它们之间大多通过某个相同的ID进行关联,那么想当然地在前端选择用户时自然希望能够自动带出部门信息,避免多余的用户操作。

 

 

 

以上面的gif展示为例,要实现申请人和申请人部门的联动,必须要找到它们之间的关联,这里就是部门ID。

申请人信息中一定带有部门ID信息,我们可以在前端展现时,将申请人的部门ID信息写入到option中的data属性中,然后在js中跟踪申请人的选择改变事件,就可以获取到选中option的data值。

接着再遍历申请人部门的option元素,只要option的value值(value为申请人部门的ID)和选中申请人的部门ID相同,就设置该option为选中状态,这样就实现了自动联动申请人部门。

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>JAVAScript实现select联动</title></head><body>    <h1>JavaScript实现select联动</h1>    <div>        <label for="user_name" class="form-label">申请人</label>        <!-- onchange跟踪select的变化事件,并将元素id传给update_user_dept -->        <select id="user_name" name="user_name" onchange="update_user_dept(this.id)">            <option value="">请选择...</option>            <!-- option中的data值记录申请人部门ID -->              <option value="张三" data="001">张三</option>              <option value="李四" data="002">李四</option>              <option value="王二麻子" data="003">王二麻子</option>        </select>          <label for="user_dept" class="form-label">申请人部门</label>        <select id="user_dept" name="user_dept">            <option value="">请选择...</option>                <option value="002">财务部</option>                <option value="001">人力部</option>                <option value="003">工程部</option>        </select>    </div>    <script src="./demo.js"></script></body></html>

在demo.js定义select改变事件的处理方法update_user_dept

function update_user_dept(id) {    // 根据传参的id定位申请人select元素    var select = document.getElementById(id);    // 获取select下的所有option选项    var options = Array.from(select.options);    // 获取选中的option的data属性值,属性值为申请人所属的部门id,selectedIndex为选中的option序号    var dept_id = options[select.selectedIndex].getAttribute("data");    // 获取申请人部门select元素    var select = document.getElementById('user_dept');    // 获取select下的所有option选项    var options = Array.from(select.options);    // 遍历option    for (let i = 0; i < options.length; i++) {        // 如果option的value值和选中申请人的dept_id相同        if (options[i].value == dept_id) {            // 设置该option为选中状态            options[i].selected = true;        }    }}
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>