保留两位小数
<input type='text' oninput="clearNoNum(this)">
let clearNoNum = function(obj){
obj.value = obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/^\./g,""); //验证第一个字符是数字
obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个.清除多余的
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$" ,".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数
if(obj.value.indexOf(".")< 0 && obj.value !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.value= parseFloat(obj.value);
}
}
只能输入正整数
<input type='text' oninput="replaceFloat(this)">
const replaceValue = function (obj) {
if (obj.value.length===1) {
obj.value = obj.value.replace(/[^\d]/g, ''); //只存在一位时可以输入0
}else{
obj.value = obj.value.replace(/^0/g, ''); //1位以上第一位不能为0
obj.value = obj.value.replace(/[^\d]/g, '');
}
};
需要注意的是:如果是vue项目,方法必须写在index.html里面的script标签里,不能写在组件里面,不然找不到. 使用onkeyup,和onchange都会存在一些bug