vue输入框 enter_多好的交互:enter、blur触发相同事件,为啥enter就走了2次

解决2次回调

「背景」:想开开心心敲代码,没料到一不小心又写了个bug。。。正常的动作就是:每次blur时,如果值有变更就提给咱后段大佬计算一下,然后重新刷新列表。不过输入框多了,摸鼠标的次数就多了,咱用户就变得莫名烦躁了、、、加个回车提交吧!!!然后上面的bug应用而生呀~每次回车都会提交2次请求,被敏锐的大佬给发现了,,,别说我开始还真没注意,不过很快意识到还真是的。

「原因」:每次enter的时候提交一次,此时鼠标失去焦点又触发了blur一次,2次没跑

「思路」:enter后我不调用了,直接走blur吧!

@keyup.enter.native="$event.target.blur"

修改后

尝试其他姿势

  • 如果enter绑定为空呢,会继续走blur吗?不会
@keyup.enter.native=""

为啥要使用$event啊,我使用e.target.blur不行吗?

  • 姿势一:这样行吗?不行,e是undefined
@keyup.enter.native="e.target.blur"
  • 姿势二:这样行吗?不行,e是undefined
@keyup.enter.native="enter(e)"methods: {    enter(e) {      console.log(e)      e.target.blur()    }  }
  • 姿势三:这样行吗?不行,e还是undefined
@keyup.enter.native="enter(1, e)"methods: {    enter(val, e) {      console.log(e)      e.target.blur()    }  }
  • 姿势四:这样可以!
@keyup.enter.native="e => enter(e)"methods: {    ...  }
  • 姿势五:这样可以!
@keyup.enter.native="enter"methods: {    ...  }
  • 姿势六:这样可以!
@keyup.enter.native="enter($event)"methods: {    ...  }
  • 姿势七:这样也可以~
@keyup.enter.native="enter(1, $event)"methods: {    ...  }

知其所以然

姿势四、五、六、七解决原理相同,主要是使用vue.js特殊变量$event,官网文档可找到,如下图

d8187ff5d176efd56ba74ad9c6c47e96.png

其他箭头函数等写法都是小细节,虽然文中使用了e,但它其实就是$event

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值