通过指令实现输入框只能输入数字

指令:v-onlyNumber

/**
 * 限制input输入框只能输入纯数字
 * 支持负数
 */
export default ({}.install = (Vue, options = {}) => {
  Vue.directive('onlyNumber', {
    bind(el, binding, vnode) {
      let input_ele
      const el_tagName = el.tagName.toUpperCase()
      if (el_tagName === 'INPUT') {
        input_ele = el
      } else {
        input_ele = el.getElementsByTagName('input')[0]
      }
      if (!input_ele) {
        return
      }

      input_ele.addEventListener('input', () => {
        var reg, res
        var val = input_ele.value
        if (binding.modifiers.positive && !binding.modifiers.float) {
          // 正整数.positive
          reg = /\D/g
          res = val.replace(reg, '')
        }
        if (!binding.modifiers.positive && !binding.modifiers.float) {
          // 默认正负整数
          reg = /\D/g
          res = val.replace(reg, '')
          if (val[0] === '-') {
            res = '-' + res
          }
        }
        input_ele.value = res
      })
    }
  })
})

在main.js中引入使用

import directives from './directive'

// register directives
directives.forEach(key => {
  Vue.use(key)
})

目录结构:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值