4 回答

TA贡献1836条经验 获得超3个赞
<input type="text" onkeyup="clearNoNum(this)">
function clearNoNum(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\d\d\d\d).*$/,'$1$2.$3'); //只能输入两个小数
$('input[name="buyMoney"]').val(accMul($('input[name="buyPrice"]').val(),$('input[name="buyVal"]').val()));
$('input[name="saleMoney"]').val(accMul($('input[name="salePrice"]').val(),$('input[name="saleVal"]').val()));
}
// 解决浮点数
function accMul(arg1,arg2){
{
if(arg1 == undefined || arg2 == undefined){
return
}
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
}

TA贡献1853条经验 获得超9个赞
<input id="input">
var input = document.getElementById('input');
var reg = /^\d+(\.)?\d{0,4}?$/;
var oldValue = ''
input.addEventListener('input',function(e){
if(reg.test(e.target.value)){
oldValue = e.target.value
}else if(e.target.value){
e.target.value = oldValue;
} else{
e.target.value = '';
oldValue = '';
}
});
input.addEventListener('change',function(e){
if(e.target.value.endsWith('.')){
e.target.value = e.target.value.slice(0,-1);
}
});
添加回答
举报