的 min 和 max 属性可限制数值范围,仅在 type="number" 下生效,浏览器自动校验并干预输入行为(如箭头、手动输入、粘贴),配合 step 控制精度,非法值触发 :invalid 伪类和 invalid 事件。

HTML 的 <input type="number"> 可以用 min 和 max 属性限制用户能输入的数值范围,浏览器会自动校验并阻止超出范围的值(包括手动输入、上下箭头调整或粘贴)。
基本写法和生效条件
必须搭配 type="number" 才能启用 min/max 校验,其他类型(如 text、range)不支持该逻辑校验:
-
<input type="number" min="10" max="100">:只允许输入 10 到 100 之间的数字(含边界) - 若未设置
step,默认步长为 1,小数会被允许但可能触发浏览器警告 - 空值、非数字输入(如字母)不会被 min/max 拦截,需配合
required或 JS 进一步校验
min/max 对输入行为的实际影响
浏览器会主动干预用户操作:
- 点击上下箭头时,超出范围后停止递增/递减
- 手动输入超限值(如输入 150),失焦后自动修正为最接近的合法值(不同浏览器策略不同:Chrome 会重置为空或 max 值,Firefox 可能保留但标记为无效)
- 粘贴超限内容(如粘贴 "200"),部分浏览器会拒绝粘贴,或粘贴后立即标红提示
配合 step 控制精度
单独设 min/max 无法限制小数位数或间隔,需加 step:
-
<input type="number" min="0" max="5" step="0.5">:只允许 0、0.5、1、1.5…5.0 -
step="1"或step="any"可分别控制是否允许小数(any表示不限精度) - 若
min不是step的整数倍(如 min="1.2" step="0.5"),第一个有效值是 1.5,不是 1.2
验证状态与样式反馈
输入非法值时,元素会获得 :invalid 伪类,可配合 CSS 提示:
-
CSS 示例:
input:invalid { border: 2px solid #f00; } - JS 中可通过
input.validity.rangeUnderflow/rangeOverflow判断具体错误类型 - 表单提交时,非法值会阻止提交,并触发
invalid事件(可自定义提示)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











