Thuộc tính min (và max, step) trên <input type="number"> không được hỗ trợ trên Firefox (tính đến thời điểm bài viết). Chrome, Edge, Safari hỗ trợ tốt.
Ví dụ minh họa
<!DOCTYPE html>
<html>
<head>
<title>HTML input number</title>
</head>
<body>
<form action="" method="get">
Nhập số từ 1 đến 10:
<input type="number" name="num" min="1" max="10"><br>
<input type="submit" value="Gửi">
</form>
</body>
</html>
Hành vi trên các trình duyệt
| Trình duyệt | Hỗ trợ min/max/step | Giao diện spinner |
|---|---|---|
| Chrome / Edge / Safari | Có | Có |
| Firefox | Không (bỏ qua min/max) | Không (hiển thị như text input) |
Giải pháp cross-browser
- Validate bằng JavaScript khi submit hoặc
oninput:
input.addEventListener('input', function() {
var val = parseFloat(this.value);
if (val < this.min) this.value = this.min;
if (val > this.max) this.value = this.max;
});
- Dùng polyfill như number-polyfill để thống nhất hành vi.
- Dùng <input type="text"> + pattern/regex validate thủ công.
Firefox đã hỗ trợ type="number" UI (spinner) từ phiên bản gần đây, nhưng validate min/max phía client vẫn cần JS để đảm bảo nhất quán.