v-model中如何使用過(guò)濾器
v-model中使用過(guò)濾器
v-model不能使用過(guò)濾器(filter)的替代或者解決方法;
如圖:
頁(yè)面中有v-model需要在輸入時(shí)驗(yàn)證格式的時(shí)候(<input v-model='price' />)

官方給出的方法是使用computed,但是多個(gè)框時(shí)computed不能很好的復(fù)用;
使用input事件,通過(guò)傳值驗(yàn)證輸入框中的內(nèi)容,
直接上代碼:
<input v-model="price" @input="priceFormat('price',price)"/>
data(){
return {
price:'',//價(jià)錢
}
},
methods: {
/*價(jià)格過(guò)濾
*data:對(duì)應(yīng)data中的名稱,是字符串,val:對(duì)應(yīng)data中的值
*/
priceFormat(data,val){
if(!/^\d*?\.?\d*?$/.test(val)){
this[data]='';//修改data中的價(jià)錢為空
}
}
}v-model或者v-text中使用過(guò)濾器進(jìn)行脫敏不生效問(wèn)題
vue.js允許我們自定義過(guò)濾器,可以用來(lái)處理一些常用的文本格式化,但是過(guò)濾器只能用在兩個(gè)地方,雙括弧插值({{}})和v-bind 表達(dá)式(后者聰vue2.1.0+才開(kāi)始支持),并且filter應(yīng)該被定義在js表達(dá)式的尾部,通常放在vue框架的methods下面;
但是有時(shí)候我們需要在v-model/v-text中使用脫敏,這里分別提供兩種方法:
1.使用v-model進(jìn)行過(guò)濾器脫敏
<template>
<div id="app">
<input type="text" v-model="userDate" />
<span>{{ userDate | dateFormat }}</span>
</div>
</template>其中,v-model用來(lái)進(jìn)行雙向綁定,下面的雙括弧用來(lái)進(jìn)行脫敏顯示;
2.手動(dòng)將關(guān)鍵部位進(jìn)行截取加*脫敏
<div class="cuzu" v-show="cuzu"> <div class="formName formSlect"> <h1>出租人姓名</h1> <input type="text" id="lessorName" v-model="Tname" disabled="disabled"> <div class="clearFix"></div> </div> <div class="formName formSlect"> <h1>出租人證件號(hào)</h1> <input type="text" id="lessorCode" v-model="Tidcard" disabled="disabled"> <div class="clearFix"></div> </div> </div>
//這里用來(lái)傳遞實(shí)參運(yùn)算
_this.name = res.userdetail.name;
_this.idcard = res.userdetail.papersnumber;
//身份證脫敏處理
info.Tidcard = res.userdetail.papersnumber.substring(0, 1) + "****************" + res.userdetail.papersnumber.substring(17, 18);
//姓名脫敏處理
info.Tname = "*" + res.userdetail.name.slice(1);這里v-model拿到后臺(tái)截取加*后的參數(shù)進(jìn)行脫敏展示。
獲取到用戶信息后對(duì)名字(2/3/4個(gè)字)進(jìn)行脫敏
_this.name = res.userdetail.name;
if (_this.name.length == 2) {
_this.yhmc = _this.name.slice(0, 1) + "*";
} else if (_this.name.length == 3) {
_this.yhmc = _this.name.slice(0, 1) + "**";
}
else {
_this.yhmc = _this.name.slice(0, 1) + "***";
}3.定義一個(gè)方法進(jìn)行脫敏處理
changeCardid: function (value) {
if (!value) return ''
//return value.replace(/(\w{3})\w*(\w{4})/, '$1******$2')
return value.replace(/(\w{1})\w*(\w{1})/, '$1****************$2')
},
changeName: function (value) {
if (!value) return ''
else {
if (value.length == 3) {
return value.substr(0, 1) + "**"
} else if (value.length == 2) {
return value.substr(0, 1) + "*"
} else {
return value.substr(0, 1) + "***"
}
}
}然后在v-model中直接調(diào)用我們聲明的脫敏方法,changeName(name)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)將時(shí)間戳轉(zhuǎn)換成日期格式
這篇文章主要介紹了vue實(shí)現(xiàn)將時(shí)間戳轉(zhuǎn)換成日期格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,2023-10-10
vue組件開(kāi)發(fā)props驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了vue組件開(kāi)發(fā)props驗(yàn)證的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
vue回到頂部監(jiān)聽(tīng)滾動(dòng)事件詳解
這篇文章主要為大家詳細(xì)介紹了vue回到頂部監(jiān)聽(tīng)滾動(dòng)事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
vue組件實(shí)現(xiàn)發(fā)表評(píng)論功能
這篇文章主要為大家詳細(xì)介紹了vue組件實(shí)現(xiàn)發(fā)表評(píng)論功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
vue-cli3+typescript初體驗(yàn)小結(jié)
這篇文章主要介紹了vue-cli3+typescript初體驗(yàn)小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
詳解使用Vue.Js結(jié)合Jquery Ajax加載數(shù)據(jù)的兩種方式
本篇文章主要介紹了詳解使用Vue.Js結(jié)合Jquery Ajax加載數(shù)據(jù)的兩種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
使用vue cli4.x搭建vue項(xiàng)目的過(guò)程詳解
這篇文章主要介紹了使用vue cli4.x搭建vue項(xiàng)目的過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Vue3 新特性defineModel用法如何讓 v-model 寫法更優(yōu)雅
Vue3.3新增defineModel語(yǔ)法糖,簡(jiǎn)化v-model雙向綁定,子組件通過(guò)聲明響應(yīng)式變量直接與父組件綁定,無(wú)需props+emit,本文給大家介紹Vue3 新特性defineModel用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-08-08

