Vue自定义正则指令全局限制Input框禁止输入特殊符号

Vue里如何使用自定义指令全局限制input特殊符号呢?直接上代码

  1. input_rules.js文件里
let findEle = (parent, type) => {
  return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type)
}

const trigger = (el, type) => {
  const e = document.createEvent('HTMLEvents')
  e.initEvent(type, true, true)
  el.dispatchEvent(e)
}

const emoji = {
  bind: function (el, binding, vnode) {
    // 正则规则可根据需求自定义
    // var pattern = new RegExp("[`~!@#$^&*()=|{}:;,\\[\\].<>?~!@#¥……&*()——|{}【】‘;:”“。,、?]+/g")
    var str= /[`~!@#$%^&*\+=<>?:"{}|,\;\\[\]·~!@#¥%&*——\+={}|《》?:“”【】、;‘,。、]/ig; 
    let $inp = findEle(el, 'input')
    el.$inp = $inp
    $inp.handle = function () {
      let val = $inp.value
      $inp.value = val.replace(str, '')
      trigger($inp, 'input')
    }
    $inp.addEventListener('keyup', $inp.handle)
  },
  unbind: function (el) {
    el.$inp.removeEventListener('keyup', el.$inp.handle)
  },
}

export default emoji

2.在main.js文件中引入input_rules.js文件

import emoji from '@/utils/input_rules';

3.使用Vue.directive全局注册指令

Vue.directive('emoji', emoji)

4.代码中使用
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值