vue组件v-vue-onkeypress限制只能输入数字

需求

日常工作中,用Vue的时候,经常遇到input框只能输入数字的要求

可以用,onkeypress事件结合String.fromCharCode去实现

<el-input v-model="name" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)));"/>

要兼容firefox,则要做兼容:

  <el-input v-model="name" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode || event.which))) || event.which === 8"/>

但是input多了,并且其它地方都需要使用,所以,就准备写个directive方便使用

directive指令的代码实现

onkeypress.js

/**
 * input输入框只能输入数字的检验指令
 */
export default {
  bind: function(el, binding) {
    el.onkeypress = function(e) {
      const ev = e || event
      // ev.which兼容firefox, String.fromCharCode(将 Unicode 编码转为一个字符)
      return (/[\d]/.test(String.fromCharCode(ev.keyCode || ev.which))) || ev.which === 8
    }
  }
}

index.js

import VueOnkeypress from './onkeypress.js'

// input输入框只能输入数字的检验指令
const install = function(Vue) {
  Vue.directive('VueOnkeypress', VueOnkeypress)
}

if (window.Vue) {
  window.VueOnkeypress = VueOnkeypress
  Vue.use(install) // eslint-disable-line
}

VueOnkeypress.install = install
export default VueOnkeypress

局部使用

// 使用
<el-input v-vue-onkeypress v-model="name"/>


import VueOnkeypress from '@/directive/vue_onkeypress/index.js'
export default {
  directives: {
    VueOnkeypress
  }
}

全局使用

import VueOnkeypress from 'src/directive/onkeypress/index'

Vue.directive('VueOnkeypress', VueOnkeypress);
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值