vue js 点击按钮为当前获得焦点的输入框输入值

vue js 点击按钮为当前获得焦点的输入框输入值

  1. 使用mousedown方法,可以阻止页面将焦点转移到按钮上
<el-button @mousedown.native="entrySymbol($event,'+')">+</el-button>
  1. 获取当前拥有焦点的输入框或文本域,并为其赋值
    //输入符号
    entrySymbol(e, symbol) {
      //取消失去焦点事件
      e.preventDefault()
      //获取当前焦点元素
      const activeNode = document.activeElement
      //为当前焦点元素赋值
      if (activeNode?.nodeName === 'INPUT' || activeNode.nodeName === 'TEXTAREA') {
        activeNode.value += symbol
      }
    }
  1. 封装好的组件
    focus-button.vue
<template>
  <el-button @mousedown.native="entrySymbol($event,label||value)">{{ label }}</el-button>
</template>

<script>
export default {
  name: 'focusButton',
  props: {
    label: String,
    value: String
  },
  methods: {
    //输入符号
    entrySymbol(e, symbol) {
      //取消失去焦点事件
      e.preventDefault()
      //获取当前焦点元素
      const activeNode = document.activeElement
      //为当前焦点元素赋值
      if (activeNode?.nodeName === 'INPUT' || activeNode.nodeName === 'TEXTAREA') {
        activeNode.value += symbol
      }
    }
  }
}
</script>

<style scoped>

</style>

focus-button.vue

<template>
  <!--  焦点按钮组  -->
  <div>
    <focus-button v-if="buttons.length" :label="btn.label||btn" :value="btn.value" v-for="btn in buttons"/>
  </div>
</template>

<script>
import FocusButton from '@/components/focusButton/focusButton'

export default {
  name: 'focusButtonGroup',
  components: { FocusButton },
  props: {
    buttons: Array
  }
}
</script>

<style scoped>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值