1 wxml
<van-field
value="{{ formdata.money }}"
bind:change="moneyChange"
type="number"
placeholder=""
border="{{ false }}"
/>
2 js
moneyChange(e){
var that = this
var value = that.formatDouble(e.detail)
that.setData({
'formdata.money':value
})
formatDouble(value){
if (value === '') {
return '';
}
// 核心过滤逻辑(清除非数字和小数点,确保格式正确)
value = value.replace(/[^\d.]/g, ""); // 只保留数字和点
value = value.replace(/^\./g, ""); // 点不能在开头
value = value.replace(/\.{2,}/g, "."); // 不能有连续的点
value = value.replace(/(\..*)\./g, '$1'); // 只能有一个点
// 4. 限制小数点后最多两位
const index = value.indexOf('.');
if (index !== -1 && value.length - index > 3) {
value = value.substring(0, index + 3);
}
return value
}