使用element-UI Cascader组件,实现第一级单选选,第二级,第三级,子级可以多选

最近开发过程中,遇到需求测一个需求,就是级联选择器,需要多选;但是第一级是单选; 既要单选又要复选。参照网上内容,自己整理了一下功能实现;

如下图:

思路:1.把第一层的复选框去掉

           2. 在第一层切换的时候,如果第一次分类改变了,把已有的值清空

代码如下:

html部分:

<el-cascader
            :popper-class="'first-no-check-cascader'"
            v-model="settingTypeValue"
            :options="treeData"
            :props="{
              value: 'id',
              label: 'name',
              children: 'children',
              emitPath: false,
              multiple: true,
            }"
            :show-all-levels="true"
            clearable
            @expand-change="changeSourceType"
          >
          </el-cascader>


css部分:

// 级联选择器,第一级不需要复选框
.first-no-check-cascader {
  .el-cascader-panel {
    .el-cascader-menu:first-child {
      .el-cascader-node {
        .el-checkbox {
          display: none !important;
        }
      }
    }
  }
}

函数部分:
cascaderTag:[], // 暂存点击时已有的tag
changeSourceType(selectItem) {
      // 一级分类只能选一个,如果一级分类修改了,清空已有值
      if (!this.cascaderTag.includes(selectItem[0])) {
        this.settingTypeValue = [];
      }
      this.cascaderTag = selectItem;
    },

参考文章:Element UI级联选择器 多选模式下,实现同一父级下最多只能选中一个子级_element级联选择器可输入-CSDN博客

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现cascader的第一级为单选,第二级为多,可以使用一些前端框架或库来实现,例如Vue.js和Element UI。下面是一个使用Vue.js和Element UI实现的示例代码: ```html <template> <div> <el-cascader v-model="selectedOptions" :options="options" :props="props" :show-all-levels="false" :clearable="false" :change-on-select="true" @change="handleCascaderChange" ></el-cascader> </div> </template> <script> export default { data() { return { selectedOptions: [], options: [ { value: 'option1', label: 'Option 1', children: [ { value: 'option1-1', label: 'Option 1-1', children: [ { value: 'option1-1-1', label: 'Option 1-1-1' }, { value: 'option1-1-2', label: 'Option 1-1-2' } ] }, { value: 'option1-2', label: 'Option 1-2', children: [ { value: 'option1-2-1', label: 'Option 1-2-1' }, { value: 'option1-2-2', label: 'Option 1-2-2' } ] } ] }, { value: 'option2', label: 'Option 2', children: [ { value: 'option2-1', label: 'Option 2-1', children: [ { value: 'option2-1-1', label: 'Option 2-1-1' }, { value: 'option2-1-2', label: 'Option 2-1-2' } ] }, { value: 'option2-2', label: 'Option 2-2', children: [ { value: 'option2-2-1', label: 'Option 2-2-1' }, { value: 'option2-2-2', label: 'Option 2-2-2' } ] } ] } ], props: { value: 'value', label: 'label', children: 'children' } }; }, methods: { handleCascaderChange(value) { console.log(value); } } }; </script> ``` 在上面的示例中,`el-cascader`组件是Element UI提供的cascader组件,通过设置`show-all-levels`为`false`,可以实现第一级为单选,第二级为多。通过设置`change-on-select`为`true`,可以在择第一级项时立即触发`change`事件。在`change`事件的处理函数中,可以获取到择的值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值