请看代码
<body>
<input type="text" oninput="checkInput(this)">
<script>
function checkInput(box) {
const reg = /^\d+(\.\d{0,2})?$/
let val = box.value
if (!reg.test(val)) {
if (isNaN(val)) {// 不是数的时候找到第一个不是数的字符,把这个字符及其后面的字符都删了
for (var i = 0; i < val.length;i ++) {
const cur = val[i]
if (isNaN(cur)){
if (cur === '.'){// '点'也不是数,但是却是数的一部分
if (val.indexOf(cur) !== val.lastIndexOf(cur)){ // 当'点'不是第一次出现的时候,把后面的删除
val = val.substr(0,val.length-1)
}
continue
}
val = val.substr(0,i)
break
}
}
} else {// 是数的时候说明只是小数输多了,把后面的删了即可
val = val.substr(0,val.length-1)
}
box.value = val
}
}
</script>
</body>