可以使用正则表达式来限制输入框只能输入数字和两位小数,同时可以在输入框的 onkeydown 事件中判断输入的内容是否符合要求,如果不符合则阻止输入。以下是示例代码:

HTML:

<input type="text" id="myInput">

JavaScript:

var myInput = document.getElementById("myInput");

myInput.addEventListener("keydown", function(event) {
  // 获取用户按下的键码
  var keyCode = event.keyCode || event.which;

  // 允许数字、小数点和退格键
  if (keyCode == 8 || keyCode == 46 || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode == 190 || keyCode == 110) {
    // 如果已经存在一个小数点,则禁止再次输入小数点
    if ((event.target.value.indexOf(".") != -1) && (keyCode == 190 || keyCode == 110)) {
      event.preventDefault();
    }

    // 如果已经输入了两位小数,则禁止再次输入数字
    if ((event.target.value.indexOf(".") != -1) && (event.target.value.split(".")[1].length == 2) && (keyCode >= 48 && keyCode <= 57)) {
      event.preventDefault();
    }
  } else {
    event.preventDefault();
  }
});

// 防止粘贴非法字符
myInput.addEventListener("paste", function(event) {
  event.preventDefault();
  var text = event.clipboardData.getData("text/plain");
  var regex = /^(\d*)(\.\d{0,2})?$/;
  if (regex.test(text)) {
    this.value = text;
  }
});

这段代码会监听输入框的 keydownpaste 事件:

  • keydown 事件中,首先判断用户按下的键是否为数字、小数点或退格键,如果不是则阻止输入。如果是数字或小数点,则判断当前输入框中已经存在的小数点个数和小数位数,如果超过限制则阻止输入。
  • paste 事件中,首先阻止默认的粘贴操作。然后获取剪贴板中的纯文本内容,使用正则表达式判断是否符合要求,如果符合则将内容赋值给输入框,否则不做任何操作。

这样就可以限制输入框只能输入数字和两位小数点,并且防止用户粘贴非法字符。

js的number输入框限制只能输入数字两位小数点不能为负数

原文地址: https://www.cveoy.top/t/topic/bo0E 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录