为了账号安全,请及时绑定邮箱和手机立即绑定

js 如何限制input只能输入数字小数点且只能输4位小数

js 如何限制input只能输入数字小数点且只能输4位小数

跃然一笑 2019-03-13 18:19:40
如题,我现在有4个input,4个input从输入开始都有只能输入数字和小数点且小数点后只能输入4位小数的限制,如果输入的格式不对,比如我写了一个s进去,这个s就写不进去了,要用到key事件,应该如何解决,求解答
查看完整描述

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)   

        }

    }


查看完整回答
反对 回复 2019-04-01
?
不负相思意

TA贡献1777条经验 获得超10个赞

正则验证一下就可以了

/^(-?\d+)(\.\d{4})?$/


查看完整回答
反对 回复 2019-04-01
?
暮色呼如

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);

   } 

});


查看完整回答
反对 回复 2019-04-01
  • 4 回答
  • 0 关注
  • 2868 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信