layui多选级联选择器的实现

在做项目的过程中经常会遇到要使用级联选择的时候,级联选择器如何实现多选呢?
先来看看效果:
在这里插入图片描述源代码如下:

<html lang="en">
  <meta charset="utf-8">
  <title>LayUI RC-Cascader</title>
  <link rel="stylesheet" href="./js/layui-v2.5.6/layui/css/layui.css">
  <style>
    html, body {
      margin: 0;
      padding: 0;
    }

    .rc-cascader {
      width: 282px;
    }

    #app {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
    }

    .main {
      padding: 16px;
    }
  </style>
  <body>
    <div id="app" class="main">
        <form class="layui-form">
            <div class="layui-form-item">
                <label class="layui-form-label">输入框</label>
                <div class="layui-input-block">
                    <input type="text" name="areas" value="1000,1368,1398" lay-filter="areasChange" style="display: none;" />
                </div>
            </div>
            <div class="layui-form-item">
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit lay-filter="*">立即提交</button>
                </div>
            </div>
        </form>
    </div>
  </body>
  <script src="./js/layui-v2.5.6/layui/layui.js"></script>
  <script type="text/javascript">
  layui.config({
    base: './ext/'
  }).extend({
    cascader: 'cascader/cascader'
  }).use(['form', 'jquery', 'cascader'], function () {
    var $ = layui.jquery, cascader = layui.cascader, form = layui.form;
    var areaTree = '[{"id":1000,"province_city":"\u5317\u4eac","fid":"0","children":[{"id":1368,"province_city":"\u5317\u4eac\u5e02","fid":"1000","children":[{"id":1397,"province_city":"\u4e1c\u57ce\u533a","fid":"1368"},{"id":1398,"province_city":"\u897f\u57ce\u533a","fid":"1368"},{"id":1399,"province_city":"\u5d07\u6587\u533a","fid":"1368"},{"id":1400,"province_city":"\u5ba3\u6b66\u533a","fid":"1368"},{"id":1401,"province_city":"\u671d\u9633\u533a","fid":"1368"},{"id":1402,"province_city":"\u6d77\u6dc0\u533a","fid":"1368"},{"id":1403,"province_city":"\u4e30\u53f0\u533a","fid":"1368"},{"id":1404,"province_city":"\u77f3\u666f\u5c71\u533a","fid":"1368"},{"id":1405,"province_city":"\u623f\u5c71\u533a","fid":"1368"},{"id":1406,"province_city":"\u901a\u5dde\u533a","fid":"1368"},{"id":1407,"province_city":"\u987a\u4e49\u533a","fid":"1368"},{"id":1408,"province_city":"\u95e8\u5934\u6c9f\u533a","fid":"1368"},{"id":1409,"province_city":"\u660c\u5e73\u533a","fid":"1368"},{"id":1410,"province_city":"\u5927\u5174\u533a","fid":"1368"},{"id":1411,"province_city":"\u6000\u67d4\u533a","fid":"1368"},{"id":1412,"province_city":"\u5e73\u8c37\u533a","fid":"1368"},{"id":1413,"province_city":"\u5bc6\u4e91\u53bf","fid":"1368"},{"id":1414,"province_city":"\u5ef6\u5e86\u533a","fid":"1368"}]}]},{"id":1001,"province_city":"\u4e0a\u6d77","fid":"0","children":[{"id":1369,"province_city":"\u4e0a\u6d77\u5e02","fid":"1001","children":[{"id":1433,"province_city":"\u9ec4\u6d66\u533a","fid":"1369"},{"id":1434,"province_city":"\u5362\u6e7e\u533a","fid":"1369"},{"id":1435,"province_city":"\u5f90\u6c47\u533a","fid":"1369"},{"id":1436,"province_city":"\u957f\u5b81\u533a","fid":"1369"},{"id":1437,"province_city":"\u9759\u5b89\u533a","fid":"1369"},{"id":1438,"province_city":"\u666e\u9640\u533a","fid":"1369"},{"id":1439,"province_city":"\u95f8\u5317\u533a","fid":"1369"},{"id":1440,"province_city":"\u8679\u53e3\u533a","fid":"1369"},{"id":1441,"province_city":"\u6768\u6d66\u533a","fid":"1369"},{"id":1442,"province_city":"\u5b9d\u5c71\u533a","fid":"1369"},{"id":1443,"province_city":"\u95f5\u884c\u533a","fid":"1369"},{"id":1444,"province_city":"\u5609\u5b9a\u533a","fid":"1369"},{"id":1445,"province_city":"\u677e\u6c5f\u533a","fid":"1369"},{"id":1446,"province_city":"\u91d1\u5c71\u533a","fid":"1369"},{"id":1447,"province_city":"\u9752\u6d66\u533a","fid":"1369"},{"id":1448,"province_city":"\u6d66\u4e1c\u65b0\u533a","fid":"1369"},{"id":1449,"province_city":"\u5357\u6c47\u533a","fid":"1369"},{"id":1450,"province_city":"\u5949\u8d24\u533a","fid":"1369"},{"id":1451,"province_city":"\u5d07\u660e\u53bf","fid":"1369", "children": [{"id":14511,"province_city":"\u5d07\u660e\u53bf","fid":"1451"}]}]}]}]';

    cascader.render({
      elem: $('input[name=areas]')[0],
      multiple: true,
      showAllLevels: true,
      separator: "/", //显示文本的分隔符号(showAllLevels开启时生效) 默认 /
      valueSeparator: ",", //选择值的级联分隔符号 默认 ,
      groupSeparator: "|", //多选时选择值的组分隔符号 默认 |
      props: {
        label: 'province_city',
        value: 'id',
        children: 'children'
      },
      options: JSON.parse(areaTree)
    });

    form.on('submit(*)', function(data){
        console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
        return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    });

  });
  </script>
</html>

demo下载地址:传送门

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
您可以使用Vant4中的`Cascader`组件来生成多选级联选择器。这个组件允许您在一个单独的组件中展示多个级联选择器,每个级联选择器之间可以进行联动。以下是一个简单的示例代码: ```html <template> <van-cascader :options="options" v-model="value" :active-item-class="activeItemClass" :item-height="itemHeight" :height="height" :visible-item-count="visibleItemCount" :placeholder="placeholder" :toolbar-position="toolbarPosition" :close-on-click-outside="closeOnClickOutside" :close-on-click-overlay="closeOnClickOverlay" :lazy-render="lazyRender" :expand-trigger="expandTrigger" :cascade="cascade" :border="border" :readonly="readonly" :disabled="disabled" :title="title" :columns-top="columnsTop" :columns-bottom="columnsBottom" :option-render="optionRender" :option-disabled="optionDisabled" :format="format" :before-confirm="beforeConfirm" :confirm-button-text="confirmButtonText" :cancel-button-text="cancelButtonText" @confirm="onConfirm" @cancel="onCancel" @change="onChange" /> </template> <script> export default { data() { return { options: [ { text: 'Fruit', value: 'fruit', children: [ { text: 'Apple', value: 'apple' }, { text: 'Banana', value: 'banana' }, { text: 'Orange', value: 'orange' } ] }, { text: 'Drink', value: 'drink', children: [ { text: 'Water', value: 'water' }, { text: 'Tea', value: 'tea' }, { text: 'Coffee', value: 'coffee' } ] } ], value: [], activeItemClass: '', itemHeight: 44, height: 220, visibleItemCount: 5, placeholder: 'Please select', toolbarPosition: 'bottom', closeOnClickOutside: true, closeOnClickOverlay: true, lazyRender: true, expandTrigger: 'click', cascade: true, border: true, readonly: false, disabled: false, title: '', columnsTop: [], columnsBottom: [], optionRender: '', optionDisabled: '', format: '', beforeConfirm: '', confirmButtonText: 'OK', cancelButtonText: 'Cancel' }; }, methods: { onConfirm(value) { console.log(value); }, onCancel() { console.log('cancel'); }, onChange(value) { console.log(value); } } }; </script> ``` 在这个示例中,`options`是一个包含所有级联选择器选项的数组,`value`是一个数组,其中包含用户选择的所有选项的值。您可以使用`@change`事件来监听用户选择的选项,`onConfirm()`方法会在用户点击确认按钮时触发,`onCancel()`方法会在用户取消选择时触发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

专业前端小白

写了这么久文章,1分钱都没收到

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

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

打赏作者

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

抵扣说明:

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

余额充值