vue自定义指令添加 input框输入全角字符时触发该指令转化为半角字符

v-angle // input框输入全角字符时触发该指令转化为半角字符

Vue.directive('angle', {
  inserted: function (el, binding, vnode) {
    el.children[0].value = binding.value
    let angleValue = el.children[0]
    // console.log(el)
    // console.log(binding)
    // console.log(vnode)
    // // vnode.data.model.callback(angleValue.value)
    // console.log(angleValue.value)
    el.addEventListener('keyup', function (e) {
      e = e || window.event
      // console.log(e)
      // // console.log(e.key)
      let str = angleValue.value
      let tmp = ''
      str = str.replace(/:/g, ':')
      str = str.replace(/。/g, '.')
      str = str.replace(/“/g, '"')
      str = str.replace(/”/g, '"')
      str = str.replace(/【/g, '[')
      str = str.replace(/】/g, ']')
      str = str.replace(/《/g, '<')
      str = str.replace(/》/g, '>')
      str = str.replace(/,/g, ',')
      str = str.replace(/?/g, '?')
      str = str.replace(/、/g, ',')
      str = str.replace(/;/g, ';')
      str = str.replace(/(/g, '(')
      str = str.replace(/)/g, ')')
      str = str.replace(/‘/g, "'")
      str = str.replace(/’/g, "'")
      str = str.replace(/『/g, '[')
      str = str.replace(/』/g, ']')
      str = str.replace(/「/g, '[')
      str = str.replace(/」/g, ']')
      str = str.replace(/﹃/g, '[')
      str = str.replace(/﹄/g, ']')
      str = str.replace(/〔/g, '{')
      str = str.replace(/〕/g, '}')
      str = str.replace(/—/g, '-')
      str = str.replace(/·/g, '.')
      /* 正则转换全角为半角 */
      for (var i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) === 12288) {
          tmp += String.fromCharCode(str.charCodeAt(i) - 12256)
          continue
        }
        if (str.charCodeAt(i) > 65280 && str.charCodeAt(i) < 65375) {
          tmp += String.fromCharCode(str.charCodeAt(i) - 65248)
        } else {
          tmp += String.fromCharCode(str.charCodeAt(i))
        }
      }
      // console.log(angleValue.value)
      // console.log(binding)
      // console.log(vnode)
      vnode.data.model.callback(tmp)
    })
  }
})

使用

<el-input
    v-angle="value"
     v-model="value"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值