el-select 选中后二次确认弹窗~

El-Select下拉选择的二次确认弹窗实现
本文介绍了如何在Element UI的el-select组件中,当用户更换选项时触发二次确认弹窗,确保操作的准确性。通过change事件和watch监听,实现了旧值的回滚功能。

1.需求:在el-select下拉选择的时候,当我们更换选项时需要弹出二次确认弹窗。

2.思路:利用el-select中change事件,通过watch监听数据变换,定义一个初始状态,当点击弹窗中确认时设置成功,点击取消时,将将监听到的旧值赋给点击的值。

3.代码:

 <el-select v-model="tab_id" placeholder="请选择" @change="tabidChange">
            <el-option v-for="item in tabList" :key="item.id" :label="item.title" :value="item.id"> </el-option>
 </el-select>

 watch: {
    tab_id(val,oldval){
      console.log(val,oldval,"监听");
      this.oldval = oldval
    }
  },

 tabidChange(val){
      let tab_titel = this.tabList.find((res)=>{
       return res.id == val
      })
      this.$confirm(`确认将「${tab_titel.title}」频道页面设置成得到首页?`, "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$message({
            type: "success",
            message: "设置成功!",
          });
        })
        .catch(() => {
          this.$message({
            type: "error",
            message: "已取消设置",
          });
          //将监听到的旧值赋给点击的值
          this.tab_id = this.oldval;
        });
    },

要实现`el-select`下拉选项点击时弹窗而非选中的功能,可以通过阻止`el-option`默认的选中行为,并在点击时弹出确认框来实现。以下是示例代码: ```vue <template> <el-select v-model="selectedOption" placeholder="请选择"> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value" @click.native.stop="handleOptionClick(option)" > <el-popover placement="right" trigger="hover" :content="option.popoverContent" > <template #reference> <span>{{ option.label }}</span> </template> </el-popover> </el-option> </el-select> </template> <script> export default { data() { return { selectedOption: '', options: [ { value: 'option1', label: '选项1', popoverContent: '这是选项1的弹出框内容' }, { value: 'option2', label: '选项2', popoverContent: '这是选项2的弹出框内容' }, { value: 'option3', label: '选项3', popoverContent: '这是选项3的弹出框内容' } ] }; }, methods: { handleOptionClick(option) { this.$confirm(`确认选择「${option.label}」吗?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }) .then(() => { this.selectedOption = option.value; this.$message({ type: "success", message: "选择成功!" }); }) .catch(() => { this.$message({ type: "error", message: "已取消选择" }); }); } } }; </script> ``` 在上述代码中,给`el-option`添加了`@click.native.stop`事件,阻止默认的选中行为,并调用`handleOptionClick`方法。在`handleOptionClick`方法中,弹出确认框,根据用户的选择来决定是否更新`selectedOption`的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值