table中有input,使用sortable进行拖拽,点击input无法聚焦

是因为行拖动(row-draggable)插件与 input 元素的聚焦事件发生了冲突。在点击input输入框时会触发draggable的choose事件,导致input框无法聚焦。

解决方法

在input上添加@pointerdown.stop.native

<el-input v-model="iptValue" @pointerdown.stop.native />

为什么click.stop不生效

dragaable源码里发现对于事件的监听不是click事件,而是如下三个:

supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari

if (options.supportPointer) {
      on(el, 'pointerdown', this._onTapStart);
    } else {
      on(el, 'mousedown', this._onTapStart);
      on(el, 'touchstart', this._onTapStart);
    }

这段代码是一个条件语句,用于添加事件监听器。它首先检查浏览器是否支持指针事件(PointerEvent),并且不是Safari浏览器。如果支持指针事件,则在元素上添加pointerdown事件的监听器(_onTapStart函数);否则,在元素上同时添加mousedown事件和touchstart事件的监听器(_onTapStart函数)。

@pointerdown.stop.native 与 @click.stop的区别主要涉及到事件类型和触发时机

  • 事件类型:
  • @pointerdown.stop.native 针对的是 pointerdown 事件,它是一个原生事件,包括鼠标点击、触摸屏点击等。
  • @click.stop 针对的是 click 事件,也是一个常见的鼠标点击事件,但不包括触摸屏等其他输入方式。
  • 触发时机:
  • @pointerdown.stop.native 在 pointerdown 事件发生时触发,这一事件在用户按下指针设备按钮(例如鼠标左键或触摸屏点击)时触发。
  • @click.stop 在 click 事件发生时触发,这一事件在用户完成鼠标点击(或触摸屏点击)时触发。
  • 兼容性:
  • @pointerdown.stop.native 更通用,适用于不同类型的指针设备,但在一些老旧浏览器中可能不被支持。
  • @click.stop 更专注于鼠标点击,通常在支持现代浏览器的情况下可用。
  • 在选择使用哪个修饰符时,取决于你想要阻止的事件类型以及你的应用中所使用的输入设备。如果需要更广泛的支持,可以考虑使用 @pointerdown.stop.native;如果只关注鼠标点击,那么 @click.stop 可能更合适。

                

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值