鍍金池/ 問答/HTML/ js 如何限制input只能輸入數(shù)字小數(shù)點(diǎn)且只能輸4位小數(shù)

js 如何限制input只能輸入數(shù)字小數(shù)點(diǎn)且只能輸4位小數(shù)

如題,我現(xiàn)在有4個(gè)input,4個(gè)input從輸入開始都有只能輸入數(shù)字和小數(shù)點(diǎn)且小數(shù)點(diǎn)后只能輸入4位小數(shù)的限制,如果輸入的格式不對(duì),比如我寫了一個(gè)s進(jìn)去,這個(gè)s就寫不進(jìn)去了,要用到key事件,應(yīng)該如何解決,求解答

回答
編輯回答
做不到

正則驗(yàn)證一下就可以了

/^(-?\d+)(\.\d{4})?$/
2017年3月23日 19:54
編輯回答
慢半拍
<input  type="text" onkeyup="clearNoNum(this)">
function clearNoNum(obj){

        obj.value = obj.value.replace(/[^\d.]/g,""); //清除"數(shù)字"和"."以外的字符

        obj.value = obj.value.replace(/^\./g,""); //驗(yàn)證第一個(gè)字符是數(shù)字而不是

        obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一個(gè). 清除多余的

        obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");

        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d).*$/,'$1$2.$3'); //只能輸入兩個(gè)小數(shù)
    

        $('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()));
    }

    // 解決浮點(diǎn)數(shù)
    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)   
        }
    }
2018年7月5日 09:30
編輯回答
凝雅
<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);
   } 
});
2018年1月1日 15:43