Ant Design Vue Popconfirm 实现回车确认(Enter 确认)

一、Popconfirm

操作的简单而紧凑的确认对话框。

要实现 Enter 确认, 查看官方 API 无法满足。
在这里插入图片描述

二、解决方式

  1. 可以在组件外部监听 Enter 事件实现(该方法会和组件本身的 blur事件冲突)。
  2. 为解决 Enter 和 组件 blur 事件冲突,采用 slot 的方式,自定义确认和取消按钮。
  3. 确认按钮 click 事件同时触发时机比 popconfirm 组件 blur 时机晚,因此修改为 mousedown 事件。

三、popconfirm 自定义确认、取消

<span 
    @keydown.enter="handleEnter"
>
    <a-popconfirm
        class="editable-cell-icon"
        :title="t('data.del_confirm')"
        :ok-text="t('data.ok')"
        :cancel-text="t('data.cancel')"
        :open="popconfirmOpen"
        @confirm="delCard"
    >
        <a-button 
            type="text" 
            size="small" 
            ref="delBtnRef"
            @click="tooglePopconfirm"
        >
            <template #icon>
                <delete-outlined />
            </template>
        </a-button>
        <template #okButton>
            <a-button 
                type="primary"
                size="small" 
                @mousedown="delCard"
            > {{ t('data.ok') }}
            </a-button>
        </template>
        <template #cancelButton>
            <a-button 
                size="small" 
                @click="tooglePopconfirm"
            > {{ t('data.cancel') }}
            </a-button>
        </template>
    </a-popconfirm>
</span>

四、变量和函数

const delBtnRef = ref();
const popconfirmOpen = ref(false);

// Ok
const delCard = () => {
    // ....
    popconfirmOpen.value = false;
};

// Cancel
const tooglePopconfirm = () => {
    popconfirmOpen.value = !popconfirmOpen.value;
};

// Enter 事件
const handleEnter = (e: any) => {
    delBtnRef.value.blur();
    // ...
};
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值