是否可以在输入字段中显示之前检查(防止显示)十进制长度的值?

时间:2019-03-25 16:43:44

标签: javascript regex

我们有相同的输入标记和事件监听器来检查用户的输入,我们只接受数字,浮点数和整数,如果是浮点数-我们只需要在逗号或点后显示两位小数即可,并且我们只想防止输入小数点后第三位,但接受更改整数部分作为我们的值。

没有可见的替换,模糊后没有变化。只是在键入时防止第三个十进制数字。

2 个答案:

答案 0 :(得分:0)

您可以检查输入中是否存在点。

如果有的话,将其位置与字符串的长度进行比较,如果超过所需的位数,则将其余部分剪掉。

document.getElementById("theInput").addEventListener("input", process);

function process() {
  var text = document.getElementById("theInput").value;
  var index = text.indexOf(".");
  if (index > -1) {
    if (text.length - index > 3) {
      document.getElementById("theInput").value = text.substr(0, text.length - 1);
    }
  }
}
<input type="input" id="theInput">

答案 1 :(得分:0)

解决了!也许某天对某人有用!

选择器-目标输入

n -昏迷后的迹象数

function floatRestriction(selector, n){

        var targetElement = document.querySelector(selector);
        var oldValue = '';
        var regexValue = '^([0-9]+[\,\.]{1}[0-9]{0,'+n+'}|[0-9]+|)$';
        var re = new RegExp(regexValue);

       targetElement.addEventListener('keypress', function(event){
            oldValue = event.target.value;      
       });

       targetElement.addEventListener('input', function(event){

            if(!re.test(event.target.value)){
            event.target.value = oldValue || '';
            }
      });

    }
    
floatRestriction('#someInput', 2);
    <input type="input" id="someInput">