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

新手上路,请多包涵

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

这是我到目前为止所拥有的,尽管限制没有正确发生。

它应该像这样工作:

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;

    }
  }
}

原文由 cloudseeker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
2 个回答
 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)" />

原文由 Brahma Dev 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

可以使用 Math.round(tis.value*100)/100!=tis.value 检查小数点后两位

笔记:

我已经使用 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);" />

原文由 jafarbtech 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题