踩坑uni-app開(kāi)發(fā)小程序input表單金額校驗(yàn)
使用v-model雙向綁定數(shù)據(jù)驱显,@input事件綁定校驗(yàn)函數(shù)氧映,并且在校驗(yàn)金額后設(shè)置時(shí)必須使用計(jì)時(shí)器
<input?v-model="money"?type="digit"??@input="testMoney"/>
testMoney(e){
? ? var?that?=?this
? ? //允許輸入一個(gè)小數(shù)點(diǎn)
? ? e.detail.value?=?e.detail.value.replace(".",?"$#$").replace(/\./g,?"").replace("$#$",?".");
? ? //允許輸入兩位小數(shù)
? ? e.detail.value?=?e.detail.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,?'$1$2.$3');
? ? //如果金額沒(méi)有小數(shù)點(diǎn)给猾,并且值不等于空拗秘,則返回浮點(diǎn)數(shù)
? ? if?(e.detail.value.indexOf(".")?<?0?&&?e.detail.value?!=?"")?{
? ? ? ? e.detail.value?=?parseFloat(e.detail.value);
? ? //如果第一位為小數(shù)點(diǎn)签舞,則轉(zhuǎn)換為0. 只保留一個(gè)小數(shù)點(diǎn)
? ? }?else?if?(e.detail.value.indexOf(".")?==?0)?{
? ? ? ? e.detail.value?=?e.detail.value.replace(/[^$#$]/g,?"0.");?
? ? ? ? e.detail.value?=?e.detail.value.replace(/\.{2,}/g,?".");
? ? }
? ? //這里計(jì)時(shí)器必須使用贷帮,不然input框中不會(huì)顯示校驗(yàn)過(guò)的值戚揭,只顯示你輸入的值
? ? setTimeout(()=>{
? ? ? ? that.money?=?e.detail.value
? ? },1)
}
以上,就是輸入的金額驗(yàn)證