随笔 - 19  文章 - 0  评论 - 1  阅读 - 8753

vue中全局限制输入特殊字符

1.新建emoji.js

复制代码
import Vue from 'vue';

// 禁止输入特殊字符
Vue.directive('emoji', {
  bind: function (el, binding, vnode) {
    // 正则规则可根据需求自定义
    const regRule = /[`~^!@#$€£₤%^&*()_\-+=<>?:"{}|.\/;'\\[\]·~!……@#¥¥%*()\-+={}|《》?:“”【】‘']/im;
    let $inp = findEle(el, 'input') || findEle(el, 'textarea');
    el.$inp = $inp;
    $inp.handle = function (event) {
      let val = $inp.value;
      $inp.value = val.replace(regRule, '');
      trigger($inp, 'input');
    }
    $inp.addEventListener('keyup', $inp.handle);
  },
  unbind: function (el) {
    el.$inp.removeEventListener('keyup', el.$inp.handle);
  }
 });

const 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);
};
复制代码

2.在 main.js 中引入该自定义组件

import '@/directives/emoji.js';

3.在组件中使用
在需要校验的输入框(多行文本框)加上 v-emoji 即可

<el-input v-emoji v-model="content" placeholder="请输入"> </el-input>

 

posted on   阿宇爱吃鱼  阅读(373)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示