JavaScript实现select联动

JavaScript实现select联动本文介绍如何实现select下拉选项的联动效果,用户及部门信息一般是通过后端读取数据库返回的,用户一般都会属于某个部门,它们之间大多通过某个相同

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

JavaScript实现select联动

以上面的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>

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

欢迎大家来到IT世界,在知识的湖畔探索吧!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;

        }

    }

}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37343.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信