el-tabs双击可编辑标签名称同时阻止el-tabs的默认键盘事件

在el-tab-pane的label插槽中写好结构

<el-tab-pane
  v-for="(item,index) in editTableList"
   :key="item.id"
   :name="index"
   :closable="true"
   :addable="true"
>
   <template #label>
      <span v-if="item.changeName" @dblclick="editTabItemName(item)">{{ item.name }}</span>
      <el-input v-else v-model="item.name" @blur="changeTabItemName(item.name,index)"  />
   </template>
   .......
</el-tan-pane>
// 双击编辑label
const editTabItemName = (item) => {
  item.changeName = false // 展示输入框
  tabLabel.value = item.name //保存修改前的label值
}
// 修改tab-pane的名字
const changeTabItemName = (val,index) => {
  if(!val)
    editTableList.value[index].name = tabLabel.value //当输入框值为空时,默认不修改
  editTableList.value[index].changeName = true
}

写完之后遇到一个问题:在输入框中按删除键删除原来的值时,当前的tab-pane也被删除了,
解决办法:在el-tabs中添加@key.capture.stop( 我用的是element-plus,如果使用的是element-ui,则添加@key.native.capture.stop )

 <el-tabs
    v-model="editableTabsValue"
    type="card"
    @keydown.capture.stop
    :before-leave="handleBeforeLeave"
    @tab-remove="handleTabsRemove"
  >
  ......
  </el-tabs>
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值