按enter回车使el-input失去焦点

一、问题

今天工作的时候,遇到了一个问题,使用element-ui中的el-input作为页面的输入框,当输入框失去焦点的时候和用户按回车的时候都触发同一个更新数据的事件。(页面的列表中存在有多个el-input,对其中某一个进行操作)

<template>
   <el-form>
     <el-form-item>

        <el-input v-model="msg" @blur="updateData"  @keyup.enter.native="updateData"></el-input>

     </el-form-item>
   </el-form>
</template>

<script>
 export default {
    data() {
      return {
        msg: ''
       }
    },
    methods: {
       updateData() {... //更新操作}
    }
 }
</script>

这样子写确实能够实现 “当el-input失去焦点和按enter回车时都能触发更新事件” 的需求,但是会出现一个问题: 

按enter回车触发更新事件后,el-input还处于聚焦状态,当el-input失去焦点后,就算数据相同,还是会再触发一次更新事件

这个时候需要在按enter回车之后使el-input失去焦点,这个时候就要用到$event,但是直接在updateData函数中使用,在enter回车后还是会触发两次更新数据事件,因为先触发了失去焦点事件--》失去焦点事件触发了更新事件--》更新事件

<template>
   <el-form>
     <el-form-item>

        <el-input v-model="msg" @blur="updateData"  @keyup.enter.native="updateData($event)"></el-input>

     </el-form-item>
   </el-form>
</template>

<script>
 export default {
    data() {
      return {
        msg: ''
       }
    },
    methods: {
       updateData(event) {
        if(event) {
            event.target.blur()
        }
        ... //更新操作}
    }
 }
</script>

二、解决办法

解决上面提到的问题后,最终的代码如下:

<template>
   <el-form>
     <el-form-item>

        <el-input v-model="msg" @blur="updateData"  @keyup.enter.native="enterBlur($event)"></el-input>

     </el-form-item>
   </el-form>
</template>

<script>
 export default {
    data() {
      return {
        msg: ''
       }
    },
    methods: {
       updateData(event) { ... //更新操作},
        
        //回车失去焦点
        enterBlur(event) { event.target.blur() }
    }
 }
</script>

 

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值