vue + elementui 实现select下拉框全选功能

17 篇文章 1 订阅

elementUI的下拉框支持多选(multiple),但是不支持全选

<el-form-item label='Type:'>         
          <el-select collapse-tags  v-model="value" placeholder="Nothing Selected"  :multiple=true  @change='changeSelect' @remove-tag='removeTag'>
            <el-option label='全选' value='全选' @click.native='selectAll'></el-option>
            	//如果是普通的html,使用@click就可以触发。如果使用组件和路由,在router-link标签中就需要使用@click.native。不然就只会跳转而不会触发事件。
            
            <el-option v-for="(item,index) in dataArray" :key="index" :label="item" :value="item">
            </el-option>
          </el-select>
          </el-form-item>


<script>
export default {
  data() {
    return {
			dataArray:['Bugzi','CQ-SPC', 'U-Clearca','SVN','Li','Mu'],
			value:[],
    }
    }
    methods {
// 下拉框全选功能
    selectAll(){
      if (this.value.length<this.dataArray.length){
        this.value = []
          this.dataArray.map((item)=> {
            this.value.push(item)
          })
          this.value.unshift('全选')
        
      }else {
        this.value=[]
      }
    },
    changeSelect(val){
      if (!val.includes('全选') && val.length === this.options.length){
        this.value.unshift('全选')
      }
      else if(val.includes('全选') && (val.length-1) < this.dataArray.length){
        this.value = this.value.filter((item)=>{
          return item !== '全选'
        })
      }

      },
      removeTag(val){
        if(val==='全选'){
          this.value=[]
        }
      },
    
    }
    }

效果展示

在这里插入图片描述

在这里插入图片描述

collapse-tags

解决 Element-UI el-select多选以collapse-tags展示时,超过显示长度溢出的问题

在这里插入图片描述

在select中添加collapse-tags后

在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用 Vue 和 Element UI 来实现框的二级联动。下面是一个简单的示例: 首先,在你的 Vue 组件中引入相关的库和组件: ```javascript <template> <div> <el-select v-model="selectedProvince" @change="handleProvinceChange"> <el-option v-for="province in provinces" :key="province" :label="province" :value="province"></el-option> </el-select> <el-select v-model="selectedCity"> <el-option v-for="city in cities" :key="city" :label="city" :value="city"></el-option> </el-select> </div> </template> <script> export default { data() { return { selectedProvince: '', selectedCity: '', provinces: ['省份1', '省份2', '省份3'], // 替换成你的省份数据 cities: { '省份1': ['城市1', '城市2', '城市3'], // 替换成你的城市数据 '省份2': ['城市4', '城市5', '城市6'], '省份3': ['城市7', '城市8', '城市9'] } }; }, methods: { handleProvinceChange() { this.selectedCity = ''; // 清空已选择的城市 } } }; </script> ``` 在上面的示例中,我们使用了两个 `el-select` 组件来展示省份和城市的下框。`provinces` 数组存储了所有的省份数据,`cities` 对象存储了每个省份对应的城市数据。当选择省份时,`handleProvinceChange` 方法会被调用,清空已选择的城市并更新城市下框的选项。 请注意,上述示例中的省份和城市数据都是静态的,你需要根据实际情况进行替换。你可以从后端或其他数据源中获取数据,并将其动态地传递给组件。 希望这个示例能帮助到你实现框的二级联动!如有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

季布,

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值