layui 多选插件selectM实现联动

平时经常使用的多选插件就是layui的selectM,新的需求需要在原有基础上,实现联动。本来是多选,现在需要改成每次选择一个,然后线上版本根据选择的包名自动获取。为了偷懒,没有直接把包名直接改成改成单选,因为后续需求可能会出现,下拉两个的联动,因此研究了下selectM的源码,并作了选中事件的源码修改。
在这里插入图片描述

源码添加选中后的函数

在这里插入图片描述

在页面的js中,实现下拉函数,这里因为重写的js是全局的,因此如果一个页面上存在两个selectM的对象,都会执行改方法,因此需要根据id指定需要执行该方法的元素。
在这里插入图片描述

第一个下拉列表

默认的数据可以直接在初始化的时候,指定data属性的url来自动填充数据,因为使用联动或者有操作才会获取数据,因此改为动态获取。

        list = selectM({
            //元素容器【必填】
            elem: '#package'
            //候选数据【必填】
            //默认值
            , selected: ''
            //最多选中个数,默认5
            , max: 1
            //input的name 不设置与选择器相同(去#.)
            , name: 'package'
            //值的分隔符
            , delimiter: ','
            //候选项数据的键名
            , field: {idName: 'id', titleName: 'name'}
            , width: 300
        });

//去后台获取数据
var new_data = list.getData("<?php echo \yii\helpers\Url::to('index.php?r=publish/get-package&worker_id=' . $worker_id);?>" + '&type=' + type);
//手动设置数据源
list.config.data = new_data;
//需要render 页面才会出现效果,比较坑的是需要render两次才会生效,不知道是不是我代码有问题
 list.render();
 list.render();

联动下拉框

      online = selectM({
            //元素容器【必填】
            elem: '#serverType'
            //候选数据【必填】
            //默认值
            , selected: ''
            //最多选中个数,默认5
            , max: 100
            //input的name 不设置与选择器相同(去#.)
            , name: 'serverType'
            //值的分隔符
            , delimiter: ','
            //候选项数据的键名
            , field: {idName: 'id', titleName: 'name',statusName:'status'}
            , width: 300
        });

第一个下拉框选中元素以后,会把选中的元素也就是存放在em中获取到,然后根据这个元素,去填充第二个下拉框的内容。代码如下

  function AfterSelected(em,_this) {
       if(_this.config.elem=='#package'){
           if(em.length>0){
               online_set(type,online,em[0]);
           }
       }
  }


    //设置在线server_type的关联
    function online_set(type, online,package='') {
        if (type == 'client') {
            online.config.data = [];
        } else {
            if(package!=''){
                online.config.data = online.getData("<?php echo \yii\helpers\Url::to('/index.php?r=publish/get-online-server-type');?>"+'&package='+package);
            }
        }
        online.render();
        online.render();
    }

源码demo

https://download.csdn.net/download/abc8125/19384747

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Layui多选下拉框组件是一款基于Layui框架开发的多选下拉框组件,它可以让用户在下拉框中选择多个选项,同时还支持搜索功能,方便用户快速定位所需选项。 该组件的使用非常简单,只需要在页面中引入相关的JS和CSS文件,并按照一定的格式配置数据即可。以下是一个简单的示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>多选下拉框组件示例</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-form-item"> <label class="layui-form-label">多选下拉框</label> <div class="layui-input-block"> <select name="test" xm-select="multi" xm-select-search> <option value="">请选择</option> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> <option value="4">选项4</option> <option value="5">选项5</option> </select> </div> </div> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script> layui.use(['form', 'xmSelect'], function(){ var form = layui.form; var xmSelect = layui.xmSelect; xmSelect.render({ el: 'select[name="test"]', tips: '请选择', searchTips: '搜索选项', filterable: true, data: [ {name: '选项1', value: '1'}, {name: '选项2', value: '2'}, {name: '选项3', value: '3'}, {name: '选项4', value: '4'}, {name: '选项5', value: '5'} ] }); }); </script> </body> </html> ``` 在上面的示例中,我们使用了Layui框架和xmSelect组件,同时在HTML中定义了一个多选下拉框。在JavaScript中使用xmSelect.render方法对该下拉框进行渲染,并配置了相关的参数,如提示语、搜索提示语、数据等。 总的来说,Layui多选下拉框组件是一款非常实用的组件,可以极大地提升用户的交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲不住的程序员

您的打赏将是我最大的鼓励感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值