You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制<input type="number">输入框中用户输入小数数值?

方案1:HTML原生基础校验

直接给输入框添加step="1"属性,原生表单提交时会自动校验输入值必须为整数,实现成本最低:

<input type="number" step="1">

该方案仅做提交校验,用户仍可手动输入小数点等非法字符,建议搭配实时校验使用。

方案2:JavaScript实时拦截(推荐)

该方案可完全禁止输入小数、字母、科学计数法符号等非法内容,同时完整保留退格、制表键、方向键、复制粘贴快捷键等常用功能的正常使用:

<input type="number" id="integerInput" step="1">
const integerInput = document.getElementById('integerInput');

// 拦截键盘输入,放行合法功能键
integerInput.addEventListener('keydown', e => {
  const allowedKeys = ['Backspace', 'Tab', 'Enter', 'Escape', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'a', 'c', 'v', 'x'];
  // 放行功能键和Ctrl组合快捷键
  if (allowedKeys.includes(e.key) || (e.ctrlKey && allowedKeys.includes(e.key))) {
    return;
  }
  // 拦截非数字输入
  if (isNaN(Number(e.key))) {
    e.preventDefault();
  }
});

// 拦截粘贴操作,自动过滤非法字符
integerInput.addEventListener('paste', e => {
  e.preventDefault();
  const pasteContent = (e.clipboardData || window.clipboardData).getData('text');
  integerInput.value = pasteContent.replace(/[^0-9]/g, '');
});

// 兜底校验,覆盖所有输入场景的非法值过滤
integerInput.addEventListener('input', () => {
  integerInput.value = integerInput.value.replace(/[^0-9]/g, '');
});

内容的提问来源于stack exchange,提问作者Adarsh Dubey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:03