Vue中全局限制輸入特殊字符方式
vue全局限制輸入特殊字符
背景:
開發(fā)中遇到的表單輸入,常常會限制特殊字符的輸入 以滿足安全性測試的要求。
單獨(dú)處理每個文本框
<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>
這樣每個輸入框單獨(dú)處理,工作量較大且不好維護(hù),所以需要自定義一個指令來統(tǒng)一實現(xiàn)這一需求。
自定義指令全局統(tǒng)一處理(推薦)
- 自定義限制輸入特殊字符指令
// emoji.js
import Vue from 'vue';
// 禁止輸入特殊字符
Vue.directive('emoji', {
bind: function (el, binding, vnode) {
// 正則規(guī)則可根據(jù)需求自定義
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>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用vite搭建ssr活動頁架構(gòu)的實現(xiàn)
本文主要介紹了使用vite搭建ssr活動頁架構(gòu),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
vue3+elementplus基于el-table-v2封裝公用table組件詳細(xì)代碼
在日常開發(fā)后端管理系統(tǒng)項目中,用于展示數(shù)據(jù)多會用表格進(jìn)行展示,下面這篇文章主要給大家介紹了關(guān)于vue3+elementplus基于el-table-v2封裝公用table組件的相關(guān)資料,需要的朋友可以參考下2023-12-12
vue實現(xiàn)點擊導(dǎo)航欄滾動頁面到指定位置的功能(推薦)
這篇文章主要介紹了vue實現(xiàn)點擊導(dǎo)航欄滾動頁面到指定位置的功能(推薦),步驟一是是通過獲取不同板塊的滾輪高度,步驟二通過編寫執(zhí)行滾動操作的函數(shù),結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
使用vuex的時候,出現(xiàn)this.$store為undefined問題
這篇文章主要介紹了使用vuex的時候,出現(xiàn)this.$store為undefined問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Vue數(shù)據(jù)更新頁面卻沒有更新的幾種情況以及解決方法
我們在開發(fā)過程中會碰到數(shù)據(jù)更新,但是頁面卻沒有更新的情況,下面這篇文章主要給大家介紹了關(guān)于Vue數(shù)據(jù)更新頁面卻沒有更新的幾種情況以及解決方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
vue3中el-uplod結(jié)合ts實現(xiàn)圖片粘貼上傳
本文主要介紹了vue3中el-uplod結(jié)合ts實現(xiàn)圖片粘貼上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
vue級聯(lián)選擇器的getCheckedNodes使用方式
這篇文章主要介紹了vue級聯(lián)選擇器的getCheckedNodes使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
vue draggable resizable gorkys與v-chart使用與總結(jié)
這篇文章主要介紹了vue draggable resizable gorkys與v-chart使用與總結(jié),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
淺析vue-cli3配置webpack-bundle-analyzer插件【推薦】
小編最近為了優(yōu)化vue項目性能,需要使用webpack-bundle-analyzer插件來分析報文件,在網(wǎng)上沒有找到合適的,下面小編給大家寫出來一個供大家參考2019-10-10
Vue項目全局配置頁面緩存之按需讀取緩存的實現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于Vue項目全局配置頁面緩存之實現(xiàn)按需讀取緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧2018-08-08

