javascript - 不要让在输入中写入大于 max 属性的数字

标签 javascript html web

document.querySelector("#maca").addEventListener("keydown", function(e) {
  if (e.target.value > this.getAttribute("max")) {
    e.preventDefault();
  }
})
<input type="text" name="maca" placeholder="maca" id="maca" max="7">

我试图阻止用户输入大于 max 属性值的数字。发生的情况是,首先允许用户写入更大的数字,然后不允许写入。

我该如何解决这个问题?

非常感谢!

最佳答案

它比看起来更棘手,因为即使是 <input type="number" max="7"/>允许您输入 9没有提示(我相信它应该提示并阻止输入,但出于某种原因不这样做)。下面的例子

<input type="number" max="7"/>

我想到了这个小的 JS 解决方案:

const max = +maca.getAttribute("max");

maca.addEventListener("keydown", function(e) {
  const typed = +e.key;
  
  if(!isNaN(typed)) e.preventDefault(); // Allow any non-number keys (backspace etc.)
  
  if ( +(e.target.value + typed) <= max) {
    maca.value += typed
  } else {
    console.log(`Number too big! Max is ${max}`)
  }
})
<input type="number" name="maca" placeholder="maca" id="maca" max="7">

这真的不允许用户输入 89 .此外,您可以键入 1但是你不能添加另一个数字来输入 11 .

关于javascript - 不要让在输入中写入大于 max 属性的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69674657/

相关文章:

javascript - 创建 jquery 函数以从另一个函数中创建的 html 运行

javascript - 开发 SPA 的最佳方法是什么?

javascript - 如何忽略请求 promise 中的自签名证书问题

html - 我希望超链接位于不同的位置

jquery - 延迟触发 DOMContent

javascript - 从跨度到跨度遍历按钮

javascript 图表库,支持 "follows"折线图与移动设备

javascript - 如何循环遍历具有不同键名但位置相同的对象

ruby - 使用 Sinatra 开发一个完整的网站有什么问题吗?

java - 在服务器上执行java程序的最佳方式