Vue中全局限制输入特殊字符方式

 更新时间:2024年03月11日 15:42:12   作者:明天也要努力  
这篇文章主要介绍了Vue中全局限制输入特殊字符方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue全局限制输入特殊字符

背景:

开发中遇到的表单输入,常常会限制特殊字符的输入 以满足安全性测试的要求。

单独处理每个文本框

<template>
  <el-input 
    v-model="content" 
    placeholder="请输入"
    @change="vaidateEmoji">
  </el-input>
</template>

<script> 
export default {
  methods: {
    vaidateEmoji() {
       const regRule = /[`~^!@#$€£₤%^&*()_\-+=<>?:"{}|.\/;'\\[\]·~!……@#¥¥%*()\-+={}|《》?:“”【】‘']/im;
       this.content = this.content.replace(regRule, '');
    },
  },
}
</script>

这样每个输入框单独处理,工作量较大且不好维护,所以需要自定义一个指令来统一实现这一需求。

自定义指令全局统一处理(推荐)

  • 自定义限制输入特殊字符指令
// 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);
};
  • 在 main.js 中引入该自定义组件
import '@/directives/emoji.js';
  • 在组件中使用

在需要校验的输入框(多行文本框)加上 v-emoji 即可

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用vite搭建ssr活动页架构的实现

    使用vite搭建ssr活动页架构的实现

    本文主要介绍了使用vite搭建ssr活动页架构,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • vue3+elementplus基于el-table-v2封装公用table组件详细代码

    vue3+elementplus基于el-table-v2封装公用table组件详细代码

    在日常开发后端管理系统项目中,用于展示数据多会用表格进行展示,下面这篇文章主要给大家介绍了关于vue3+elementplus基于el-table-v2封装公用table组件的相关资料,需要的朋友可以参考下
    2023-12-12
  • vue实现点击导航栏滚动页面到指定位置的功能(推荐)

    vue实现点击导航栏滚动页面到指定位置的功能(推荐)

    这篇文章主要介绍了vue实现点击导航栏滚动页面到指定位置的功能(推荐),步骤一是是通过获取不同板块的滚轮高度,步骤二通过编写执行滚动操作的函数,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 使用vuex的时候,出现this.$store为undefined问题

    使用vuex的时候,出现this.$store为undefined问题

    这篇文章主要介绍了使用vuex的时候,出现this.$store为undefined问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Vue数据更新页面却没有更新的几种情况以及解决方法

    Vue数据更新页面却没有更新的几种情况以及解决方法

    我们在开发过程中会碰到数据更新,但是页面却没有更新的情况,下面这篇文章主要给大家介绍了关于Vue数据更新页面却没有更新的几种情况以及解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • vue3中el-uplod结合ts实现图片粘贴上传

    vue3中el-uplod结合ts实现图片粘贴上传

    本文主要介绍了vue3中el-uplod结合ts实现图片粘贴上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • vue级联选择器的getCheckedNodes使用方式

    vue级联选择器的getCheckedNodes使用方式

    这篇文章主要介绍了vue级联选择器的getCheckedNodes使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • vue draggable resizable gorkys与v-chart使用与总结

    vue draggable resizable gorkys与v-chart使用与总结

    这篇文章主要介绍了vue draggable resizable gorkys与v-chart使用与总结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】

    浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】

    小编最近为了优化vue项目性能,需要使用webpack-bundle-analyzer插件来分析报文件,在网上没有找到合适的,下面小编给大家写出来一个供大家参考
    2019-10-10
  • Vue项目全局配置页面缓存之按需读取缓存的实现详解

    Vue项目全局配置页面缓存之按需读取缓存的实现详解

    这篇文章主要给大家介绍了关于Vue项目全局配置页面缓存之实现按需读取缓存的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-08-08

最新评论