vue使用input组件,失去焦点和按下回车键造成二次执行同一方法

46 篇文章 1 订阅
16 篇文章 1 订阅

需求:

使用element-ui中的el-input作为页面的输入框,当输入框失去焦点的时候和用户按回车的时候都触发同一个搜索数据的事件。

一、问题

<template>
 <el-input v-model="val" @blur="searchData"  @keyup.enter.native="searchData"></el-input>
</template>
 
<script>
 export default {
    data() {
      return {
        val: ''
       }
    },
    methods: {
       searchData() {... //搜索操作}
    }
 }
</script>

出现问题:

如果el-input还处于聚焦状态,按enter回车触发搜索事件后,当el-input失去焦点后,又会再触发一次搜索事件。

二、解决办法

这个时候需要在按enter回车之后使el-input失去焦点,这个时候就要用到$event。

<template>
 <el-input v-model="val" @blur="searchData"  @keyup.enter.native="$event.target.blur()"></el-input>
</template>
 
<script>
 export default {
    data() {
      return {
        val: ''
       }
    },
    methods: {
       searchData() {... //搜索操作}
    }
 }
</script>

这样不管是失去焦点,还是按下回车,都只会调用一次方法,避免出现问题

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值