視圖
<div>
<input type="digit" v-model="inputValue" @input="handleInput" />
</div>
js
// 處理輸入的內(nèi)容蛾默,只允許輸入兩位小數(shù)
handleInput(event) {
if (event.detail.value) {
this.isShowClear = true
}
let val = event.detail.value;
val = val.replace("-", "");//屏蔽負(fù)數(shù)
// 如果輸入內(nèi)容不是數(shù)字和小數(shù)點(diǎn)淡诗,則直接返回上次輸入的值。在input里已經(jīng)處理過:type="digit"
//=========================================
if (!/^\d+(\.\d*)?$/.test(val)) {
event.detail.value = this.inputValue;
return;
}
// console.log('處理輸入的內(nèi)容', val);
// 將輸入的內(nèi)容轉(zhuǎn)為浮點(diǎn)型
val = parseFloat(val);//關(guān)鍵代碼呻此,其他可注釋
// 如果轉(zhuǎn)換失敗,則直接返回上次輸入的值
if (isNaN(val)) {
event.detail.value = this.inputValue;
return;
}
//=====================================
// 只保留兩位小數(shù)
if(AMapUtils.isMoreThanTwo(val))
{
val = val.toFixed(2);
}
// console.log('只保留兩位小數(shù)', val);
// 更新數(shù)據(jù)
this.$nextTick(() => {
this.inputValue = val;
event.detail.value = val;
});
this.$forceUpdate();
//保證只能輸入兩個(gè)小數(shù)
},
判斷小數(shù)是否超過兩位
function isMoreThanTwo(num) {
// 使用正則表達(dá)式判斷是否是小數(shù)
if(/\./.test(num)) {
// 使用split('.')將數(shù)字分割成整數(shù)部分和小數(shù)部分
var parts = num.toString().split('.');
// 獲取小數(shù)部分的長度
var decimalPlaces = parts[1].length;
// 如果小數(shù)部分的長度大于2拳话,則返回true姻氨,否則返回false
return decimalPlaces > 2;
} else {
return false;
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者