在Vue+ElementUI 中做數據校驗。當用戶輸入錯誤時清空input控件在特定情況下會出現原有清空數據會恢復。這是因為在Vue中數據是雙向綁定的,只清空控件文字但form表單中還有數據。
附問題代碼:
1 <el-form-item label="編號" prop="asgnum" > 2 <el-input v-model="form.asgnum" auto-complete="off" placeholder="請輸入編號" maxLength="50" 3 onblur ="if(this.value.replace(/[\u4E00-\u9FA5]/g,'aa').length > this.maxLength){//超過就提示 4 alert('不得超過' + this.maxLength + '個字符(中文占2個字符)');this.value='';}"> 5 </el-input> 6 </el-form-item>
解決方法:只需要把Html對象監聽改成 oninput 即可。
原因:onblur 為失焦監聽會允許用戶先錄入數據在進行檢查。
oninput為鍵盤輸入監聽先進行檢查避免用戶把錯誤的值錄入到表單中。
上面的方法對於用戶體驗並不友好所以補充:
直接通過錄入from表單,當為無數據是給賦值為 ' '
//部分截取 function queryData(oneQuery){ if (oneQuery != null && oneQuery != undefined && oneQuery != ''){ vue.filters.ocename = oneQuery; }else { vue.filters.ocename = ''; } vue.····(); //調用vue的查詢方法 }
以上的例子也許描述很混亂導致讀者不明白我想表達的意思:
簡而言之核心思想就是既然是雙向傳值綁定,那就直接操作from表單的值就好了。
如有錯誤請在下方批評討論。雖然本人水平也非常有限,如需幫助也可以留言私信。