van-field校驗資料中文輸入問題
阿新 • • 發佈:2021-05-13
<div class="super-info">
<div class="super-title name-title">姓名</div>
<van-field class="super-my-field-input" v-model="subStoreObj.userName" :formatter="formatters" :rules="[
{validator: validatorUserName, message:'', trigger:'onBlur'}
]" type="text" @focus="userNameError=false" autosize clearable maxlength="10" placeholder="請輸入您的姓名,最多可輸入10個字元" show-word-limit center/>
<div v-show="userNameError" class="super-van-field__error-message">姓名不能為空</div>
< /div>
<div class="super-info">
<div class="super-title mobile-title">聯絡方式</div>
<!-- 輸入手機號,調起手機號鍵盤 -->
<!-- { required: true, message: '請填寫您的手機號碼!' }, -->
<van-field class="super-my-field-input" v-model="subStoreObj.phone" type="tel" name="validator" :rules="[
{ validator: validatorPhone}
]" @focus="phoneError=false" autosize clearable maxlength="11" placeholder="請輸入您的11位聯絡電話" show-word-limit center />
<div v-show="phoneError" class="super-van-field__error-message">請輸入正確的電話格式</div>
</div>
實現的效果如下:
解析:
對姓名校驗,並對emoji表情過濾,在
method:{
...
validatorUserName (val) {
//解決目的是:解決手機上輸入中文時,直接點確認輸入的英文通過val獲取為空問題
val = this.subStoreObj.userName
console.log("name:", val)
if (val == '' || val == undefined) {
this.userNameError = true
this.superSubmitBoxStyle = false
}
//提交按鈕
this.checkSubmit()
},
formatters(value){
//過濾emoji表情輸入
let reg = /[^\u0020-\u007E\u00A0-\u00BE\u2E80-\uA4CF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u0080-\u009F\u2000-\u201f\u2026\u2022\u20ac\r\n]/g;
return value.replace(reg, '');
},
...
}
解決重點注意寫法:
{validator: validatorUserName, message:’’, trigger:‘onBlur’}