Vue中全局限制輸入特殊字符方式
vue全局限制輸入特殊字符
背景:
開發(fā)中遇到的表單輸入,常常會(huì)限制特殊字符的輸入 以滿足安全性測試的要求。
單獨(dú)處理每個(gè)文本框
<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>
這樣每個(gè)輸入框單獨(dú)處理,工作量較大且不好維護(hù),所以需要自定義一個(gè)指令來統(tǒng)一實(shí)現(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';
- 在組件中使用
在需要校驗(yàn)的輸入框(多行文本框)加上 v-emoji 即可
<el-input v-emoji v-model="content" placeholder="請輸入"> </el-input>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue單頁面應(yīng)用做預(yù)渲染的方法實(shí)例
vue是一個(gè)單頁面的應(yīng)用,這導(dǎo)致一些爬蟲和百度無法搜索到,如果你想針對你應(yīng)用的其中某些頁面進(jìn)行SEO優(yōu)化,讓他們可以被爬蟲和百度搜索到,你可以進(jìn)行預(yù)渲染操作,下面這篇文章主要給大家介紹了關(guān)于Vue單頁面應(yīng)用做預(yù)渲染的相關(guān)資料,需要的朋友可以參考下2021-10-10antd?vue?表格rowSelection選擇框功能的使用方式
這篇文章主要介紹了antd?vue?表格rowSelection選擇框功能的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。2022-12-12說說如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法
這篇文章主要介紹了說說如何在Vue.js中實(shí)現(xiàn)數(shù)字輸入組件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01vue中使用jeecg進(jìn)行前后端聯(lián)調(diào)方式
這篇文章主要介紹了vue中使用jeecg進(jìn)行前后端聯(lián)調(diào)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue獲取DOM元素并設(shè)置屬性的兩種實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄獀ue獲取DOM元素并設(shè)置屬性的兩種實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09