一旦达到2位小数,Javascript就会限制输入

时间:2017-09-20 12:08:39

标签: javascript decimal-point

我目前有一个数字输入脚本,其行为类似于计算器,显示数字的方式,但我想在两位数字超过小数点后停止向系列添加其他数字。

这是我到目前为止所做的,虽然限制没有正确发生。

它应该像这样工作:

1.25 - 允许

12.5 - 允许

125.5 - 允许

125.55 - 允许

123.555 - 不允许

main.jsp
........
.......
<div>
<jsp:include page="<%=NAME%>" /> 
</div>
.......
.........

这部分有效......

rText = document.getElementById("resultText");

function selectNumber(num) {
if (!rText.value || rText.value == "0") {
    rText.value = num;
}
else {

但是这部分不起作用......任何想法???

        rText.value += num;

    }
  }
}

4 个答案:

答案 0 :(得分:7)

var validate = function(e) {
  var t = e.value;
  e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), 3)) : t;
}
<input type="text" id="resultText" oninput="validate(this)" />

答案 1 :(得分:0)

我喜欢使用Math.floor和toFixed()来解决我的小数问题。

这是一个例子:

var value = 123.5555
var roundedNumber = (Math.floor(value * 100) / 100).toFixed(2)

roundedNumber将是&#34; 123.55&#34;作为一个字符串。所以,如果你想要一个数字,只需添加:

var value = 123.5555
var roundedNumber = Number((Math.floor(value * 100) / 100).toFixed(2))

现在您将值作为数字并固定为小数点后两位。

答案 2 :(得分:0)

将以前的值保存在某些数据属性中,如果超过2位小数,则恢复之前的值

可以使用Math.round(tis.value*100)/100!=tis.value

检查2个小数位

注意:

我已经使用oninput来验证复制粘贴方案

function restrict(tis) {
  var prev = tis.getAttribute("data-prev");
  prev = (prev != '') ? prev : '';
  if (Math.round(tis.value*100)/100!=tis.value)
  tis.value=prev;
  tis.setAttribute("data-prev",tis.value)
}
<input type="number" id="rText" oninput="restrict(this);" />

答案 3 :(得分:0)

只需复制粘贴此方法并在相应按钮上调用此方法,您必须在该按钮上检查此十进制验证。

function CheckDecimal(inputtxt)   
    {   
    var decimal=  /^[-+]?[0-9]+\.[0-9]+$/;   
    if(inputtxt.value.match(decimal))   
    {   
    alert('Correct, try another...')  
    return true;  
    }  
    else  
    {   
    alert('Wrong...!')  
    return false;  
    }  
    }