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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
vue3+elementplus基于el-table-v2封装公用table组件详细代码
在日常开发后端管理系统项目中,用于展示数据多会用表格进行展示,下面这篇文章主要给大家介绍了关于vue3+elementplus基于el-table-v2封装公用table组件的相关资料,需要的朋友可以参考下2023-12-12
使用vuex的时候,出现this.$store为undefined问题
这篇文章主要介绍了使用vuex的时候,出现this.$store为undefined问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-06-06
vue draggable resizable gorkys与v-chart使用与总结
这篇文章主要介绍了vue draggable resizable gorkys与v-chart使用与总结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-09-09
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
小编最近为了优化vue项目性能,需要使用webpack-bundle-analyzer插件来分析报文件,在网上没有找到合适的,下面小编给大家写出来一个供大家参考2019-10-10


最新评论