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

Javascript restrict input once 2 decimal places have been reached

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

这是我目前的情况,但限制没有正确发生。

它应该像这样工作:

1.25 - 允许

12.5 - 允许

125.5 - 允许

125.55 - 允许

123.555 - 不允许

rText = document.getElementById("resultText");

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

这部分有效...

        rText.value += num;

    }
  }
}

但这部分不起作用...有什么想法吗???

if (rText.value.length - (rText.value.indexOf(".") + 1) > 2) {

        return false;
    } else {
        rText.value += num;

    }
  }
}

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

这是一个例子:

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

roundedNumber 将是字符串形式的“123.55”。所以如果你想要一个数字,只需添加:

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

现在您的值是一个数字,并且固定为最多 2 位小数。

在某些数据属性中保存以前的值,如果它超过 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);" />

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)" />

只需复制粘贴此方法并在您必须检查此小数验证的相应按钮上调用此方法。

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