+
80
-

layui下拉多选框怎么实现?

layui下拉多选框怎么实现?类似于下面这种效果的。

800_auto

网友回复

+
0
-

使用xmselect

800_auto

完整示例代码

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <!-- layui css -->
    <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/js/layui/css/layui.css">
    <!-- layui js -->
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/layui/layui.all.js"></script>

    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/xm-select.js"></script>
</head>

<body style="min-height: 1000px;">
    <div class="layui-container">
        <!-- 拷贝整个.layui-card 即可 -->
        <div class="layui-card" id="userinfo">
            <div class="layui-card-header">下拉框多选:默认选中,远程搜索等常用参数</div>
            <div class="layui-card-body">
                <form class="layui-form" action="" lay-filter="info">

                    <div class="layui-form-item">
                        <div id="demo1"></div>
                    </div>

                </form>
                <script>

                         var options = {
                                el: '#demo1',
                                name: 'xmselectName',//表单的name属性
                                layVerify: 'required',//必填项
                                //layVerType: 'tips',//提示类型 同layui
                                tips: '你喜欢什么水果呢?傻瓜教程',
                                toolbar: {//工具条,全选,清空,反选,自定义
                                    show: true,
                                    list: [ 
                                        'ALL', 
                                        'CLEAR', 
                                        'REVERSE',
                                        {
                                            name: '自定义',
                                            icon: 'el-icon-star-off',
                                            method(data){
                                                alert('我是自定义的');
                                            }
                                        } 
                                    ]
                                },
                                data: [],
                                initValue: [1,2],//默认初始化,也可以数据中selected属性
                                //language: 'zn',//语言包
                                //filterable: true,//搜索功能
                                //autoRow: true,//选项过多,自动换行
                                // repeat: true,//是否支持重复选择
                                //max: 2,//最多选择2个
                                // template({ item, sels, name, value }){
                                //    //template:自定义下拉框的模板
                                //     return item.name  + '<span style="position: absolute; right: 10px; color: #8799a3">'+value+'</span>' 
                                // },
                        };
                        var demo1 = xmSelect.render(options)
                        setTimeout(function(){
                            //假设data是ajax 异步获取的
                            var data =[
                                //selected属性可以初始化下拉框
                                //{name: '水果', value:'shuiguo',selected:true, disabled: true},
                                {name: '水果', value:1},
                                {name: '蔬菜', value: 2},
                                {name: '桌子', value: 3},
                                {name: '北京', value: 4},
                            ];

                            //模拟通过ajax 获取json数据,异步更新多选下拉框的值
                            demo1.update({data: data})
                             demo1.setValue([1]);
                            console.log( demo1.getValue());
                        },100);
                </script>
            </div>
        </div>
    </div>
</body>

</html>

xmselect的赋值与取值

var selectTest = xmselect.render()

xmselect对象在渲染时返回的元素在这里派上用场了 selectTest.setValue([1]);

参数: value值的数组(data中的value值),如果你的data数据完整那么xmselect对象会通过指定的value值回显。 当然没有完整的下拉栏信息,也可以设置单条数据回显。 selectTest.setValue([{ name: '动态值', value: 999 }])

其他方法:

获取value值 selectTest.getValue();

我知道答案,我要回答