html5 的 `min` 和 `max` 属性仅对数值型或日期型输入(如 `type="number"`、`type="date"`)生效,无法用于文本长度校验;若需限制输入字符数,应改用 `pattern` 正则属性配合 `title` 提供友好提示。
在您的场景中, 之所以未触发验证,根本原因在于:min/max 属性对 type="text" 无效。浏览器仅在 type 为 number、r
ange、date、datetime-local、month、time 或 week 时解析并应用这些属性。而您期望的是“客户编号必须为 5 位字符(含前导零)”,这属于字符串长度约束,而非数值范围约束。
✅ 正确做法:使用 HTML5 pattern 属性进行正则校验
pattern 支持任意正则表达式(无需 /.../ 包裹),配合 title 可自定义错误提示,且原生支持表单提交时自动触发验证:
? 关键说明:
? 在动态生成字段的 JavaScript 中,应这样修正 custnum 字段逻辑:
立即学习“前端免费学习笔记(深入)”;
if (input.name === "custnum") {
input.required = true;
input.pattern = "^.{5}$"; // ✅ 替换 min/max
input.title = "Customer Number must be exactly 5 characters";
// 移除无效的 input.min/input.max 赋值
}⚠️ 注意事项:
总结:HTML5 表单验证能力强大,但需严格匹配属性与输入类型的语义。用对 pattern,即可零 JS 实现精准的字符长度控制,同时保持原生体验与可访问性。