<input>: The HTML Input element
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Phần tử <input> HTML được dùng để tạo các điều khiển tương tác trong biểu mẫu web nhằm nhận dữ liệu từ người dùng; có nhiều loại dữ liệu đầu vào và widget điều khiển khác nhau tùy theo thiết bị và user agent. Phần tử <input> là một trong những phần tử mạnh mẽ và phức tạp nhất trong HTML do số lượng lớn các kết hợp giữa loại input và thuộc tính.
Try it
<label for="name">Name (4 to 8 characters):</label>
<input
type="text"
id="name"
name="name"
required
minlength="4"
maxlength="8"
size="10" />
label {
display: block;
font:
1rem "Fira Sans",
sans-serif;
}
input,
label {
margin: 0.4rem 0;
}
Các loại <input>
Cách hoạt động của <input> thay đổi đáng kể tùy theo giá trị của thuộc tính type, vì vậy các loại khác nhau được đề cập trong các trang tham khảo riêng. Nếu thuộc tính này không được chỉ định, loại mặc định là text.
Các loại có sẵn như sau:
| Loại | Mô tả | Ví dụ cơ bản |
|---|---|---|
| button |
Nút nhấn không có hành vi mặc định, hiển thị giá trị của thuộc tính value, mặc định để trống.
|
|
| checkbox | Hộp kiểm cho phép chọn/bỏ chọn các giá trị đơn. |
|
| color | Điều khiển để chỉ định màu sắc; mở bộ chọn màu khi hoạt động trên các trình duyệt hỗ trợ. |
|
| date | Điều khiển để nhập ngày (năm, tháng, ngày, không có giờ). Mở bộ chọn ngày hoặc bánh xe số cho năm, tháng, ngày khi hoạt động trên các trình duyệt hỗ trợ. |
|
| datetime-local | Điều khiển để nhập ngày và giờ, không có múi giờ. Mở bộ chọn ngày hoặc bánh xe số cho các thành phần ngày và giờ khi hoạt động trên các trình duyệt hỗ trợ. |
|
Trường để chỉnh sửa địa chỉ email. Trông giống input
text, nhưng có tham số xác thực và bàn phím phù hợp trên các trình duyệt và thiết bị hỗ trợ có bàn phím động.
|
|
|
| file |
Điều khiển cho phép người dùng chọn tệp.
Dùng thuộc tính accept để định nghĩa loại tệp mà điều khiển có thể chọn.
|
|
| hidden | Điều khiển không hiển thị nhưng giá trị của nó được gửi lên server. Có ví dụ ở cột bên, nhưng nó ẩn! | |
| image |
Nút submit dạng đồ họa. Hiển thị hình ảnh được định nghĩa bởi thuộc tính src.
Thuộc tính alt hiển thị nếu hình ảnh src bị thiếu.
|
|
| month | Điều khiển để nhập tháng và năm, không có múi giờ. |
|
| number | Điều khiển để nhập số. Hiển thị spinner và thêm xác thực mặc định. Hiển thị bàn phím số trên một số thiết bị có bàn phím động. |
|
| password | Trường văn bản một dòng có giá trị bị che khuất. Sẽ cảnh báo người dùng nếu trang web không an toàn. |
|
| radio |
Nút radio, cho phép chọn một giá trị duy nhất trong số nhiều lựa chọn có cùng giá trị name.
|
|
| range |
Điều khiển để nhập số có giá trị chính xác không quan trọng.
Hiển thị dưới dạng widget phạm vi mặc định là giá trị ở giữa.
Dùng kết hợp với min và max để xác định phạm vi giá trị chấp nhận được.
|
|
| reset | Nút đặt lại nội dung biểu mẫu về giá trị mặc định. Không khuyến khích sử dụng. |
|
| search | Trường văn bản một dòng để nhập chuỗi tìm kiếm. Ngắt dòng được tự động xóa khỏi giá trị input. Có thể bao gồm biểu tượng xóa trên các trình duyệt hỗ trợ. Hiển thị biểu tượng tìm kiếm thay vì phím enter trên một số thiết bị có bàn phím động. |
|
| submit | Nút gửi biểu mẫu. |
|
| tel | Điều khiển để nhập số điện thoại. Hiển thị bàn phím điện thoại trên một số thiết bị có bàn phím động. |
|
| text | Giá trị mặc định. Trường văn bản một dòng. Ngắt dòng được tự động xóa khỏi giá trị input. |
|
| time | Điều khiển để nhập giá trị thời gian không có múi giờ. |
|
| url |
Trường để nhập URL. Trông giống input text, nhưng có tham số xác thực và bàn phím phù hợp trên các trình duyệt và thiết bị hỗ trợ có bàn phím động.
|
|
| week | Điều khiển để nhập ngày bao gồm số tuần-năm và số tuần không có múi giờ. |
|
| Giá trị lỗi thời | ||
datetime
Deprecated
|
Điều khiển để nhập ngày và giờ (giờ, phút, giây, và phần thập phân của giây) dựa trên múi giờ UTC. |
|
Thuộc tính
Phần tử <input> rất mạnh mẽ nhờ các thuộc tính của nó; thuộc tính type, được mô tả với các ví dụ ở trên, là quan trọng nhất. Vì mọi phần tử <input>, bất kể loại nào, đều dựa trên giao diện HTMLInputElement, về mặt kỹ thuật chúng chia sẻ cùng một tập hợp thuộc tính. Tuy nhiên, trên thực tế, hầu hết các thuộc tính chỉ có tác dụng trên một tập con cụ thể của các loại input.
Bảng dưới đây liệt kê tất cả các thuộc tính với mô tả ngắn gọn, tiếp theo là danh sách mô tả chi tiết từng thuộc tính:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
accept |
file |
Gợi ý loại tệp dự kiến trong điều khiển tải lên tệp |
alpha |
color |
Độ trong suốt của màu sắc |
alt |
image |
Thuộc tính alt cho loại image. Bắt buộc cho khả năng tiếp cận |
autocapitalize |
tất cả trừ url, email, và password |
Kiểm soát viết hoa tự động trong văn bản nhập vào |
autocomplete |
tất cả trừ checkbox, radio, và buttons |
Gợi ý cho tính năng tự động điền biểu mẫu |
capture |
file |
Phương thức chụp media trong điều khiển tải lên tệp |
checked |
checkbox, radio |
Liệu lệnh hoặc điều khiển có được chọn không |
colorspace |
color |
Không gian màu dùng để chọn giá trị màu |
dirname |
hidden, text, search, url, tel, email |
Tên trường biểu mẫu để gửi hướng của phần tử khi submit |
disabled |
tất cả | Liệu điều khiển biểu mẫu có bị vô hiệu hóa không |
form |
tất cả | Liên kết điều khiển với phần tử form |
formaction |
image, submit |
URL để gửi biểu mẫu |
formenctype |
image, submit |
Loại mã hóa tập dữ liệu biểu mẫu khi gửi |
formmethod |
image, submit |
Phương thức HTTP để gửi biểu mẫu |
formnovalidate |
image, submit |
Bỏ qua xác thực điều khiển biểu mẫu khi gửi |
formtarget |
image, submit |
Ngữ cảnh duyệt để gửi biểu mẫu |
height |
image |
Tương tự thuộc tính height cho <img>; chiều cao |
list |
tất cả trừ hidden, password, checkbox, radio, và buttons |
Giá trị thuộc tính id của <datalist> chứa các tùy chọn autocomplete |
max |
date, month, week, time, datetime-local, number, range |
Giá trị tối đa |
maxlength |
text, search, url, tel, email, password |
Độ dài tối đa (số ký tự) của value |
min |
date, month, week, time, datetime-local, number, range |
Giá trị tối thiểu |
minlength |
text, search, url, tel, email, password |
Độ dài tối thiểu (số ký tự) của value |
multiple |
email, file |
Boolean. Liệu có cho phép nhiều giá trị không |
name |
tất cả | Tên của điều khiển biểu mẫu. Được gửi cùng với giá trị khi submit |
pattern |
text, search, url, tel, email, password |
Mẫu mà value phải khớp để hợp lệ |
placeholder |
text, search, url, tel, email, password, number |
Văn bản hiển thị trong điều khiển biểu mẫu khi chưa có giá trị |
popovertarget |
button |
Chỉ định <input type="button"> là điều khiển cho phần tử popover |
popovertargetaction |
button |
Chỉ định hành động mà điều khiển popover thực hiện |
readonly |
tất cả trừ hidden, range, color, checkbox, radio, và buttons |
Boolean. Giá trị không thể chỉnh sửa |
required |
tất cả trừ hidden, range, color, và buttons |
Boolean. Giá trị bắt buộc hoặc phải được chọn để biểu mẫu có thể submit |
size |
text, search, url, tel, email, password |
Kích thước của điều khiển |
src |
image |
Tương tự thuộc tính src cho <img>; địa chỉ tài nguyên hình ảnh |
step |
date, month, week, time, datetime-local, number, range |
Các giá trị tăng dần hợp lệ |
switch |
checkbox |
Liệu input checkbox có nên được hiển thị dưới dạng switch không |
type |
tất cả | Loại điều khiển biểu mẫu |
value |
tất cả trừ image |
Giá trị của điều khiển. Khi được chỉ định trong HTML, tương ứng với giá trị ban đầu |
width |
image |
Tương tự thuộc tính width cho <img> |
Các thuộc tính riêng lẻ
accept-
Chỉ hợp lệ cho loại input
file, thuộc tínhacceptxác định loại tệp nào có thể được chọn trong điều khiển tải lênfile. Xem loại input file. alphaExperimental-
Chỉ hợp lệ cho loại input
color, thuộc tínhalphacung cấp cho người dùng cuối khả năng đặt độ trong suốt của màu đang được chọn. alt-
Chỉ hợp lệ cho nút
image, thuộc tínhaltcung cấp văn bản thay thế cho hình ảnh, hiển thị giá trị của thuộc tính nếusrcbị thiếu hoặc không tải được. Xem loại input image. autocapitalize-
Kiểm soát liệu văn bản nhập vào có được viết hoa tự động hay không. Xem trang thuộc tính toàn cục
autocapitalize. autocomplete-
(Không phải thuộc tính Boolean!) Thuộc tính
autocompletenhận giá trị là chuỗi phân cách bằng khoảng trắng mô tả loại chức năng autocomplete mà input cần cung cấp. Xemautocompletecho các giá trị được phép. autofocus-
Thuộc tính Boolean, nếu có, chỉ ra rằng input sẽ tự động nhận focus khi trang tải xong.
Note: Phần tử có thuộc tính
autofocuscó thể nhận focus trước khi sự kiệnDOMContentLoadedđược kích hoạt.Warning: Tự động focus vào điều khiển biểu mẫu có thể gây nhầm lẫn cho người dùng khiếm thị dùng công nghệ đọc màn hình và người dùng có khiếm khuyết nhận thức.
capture-
Chỉ hợp lệ cho loại input
file, thuộc tínhcapturexác định media nào — microphone, video, hay camera — sẽ được dùng để chụp tệp mới cho việc tải lên. checked-
Hợp lệ cho cả
radiovàcheckbox,checkedlà thuộc tính Boolean. Nếu có trên loạiradio, cho biết nút radio đó đang được chọn trong nhóm. Nếu có trêncheckbox, cho biết checkbox mặc định được chọn khi trang tải. colorspaceExperimental-
Chỉ hợp lệ cho loại input
color, thuộc tínhcolorspacexác định không gian màu được sử dụng. Giá trị có thể là"limited-srgb"(mặc định) hoặc"display-p3". dirname-
Hợp lệ cho
hidden,text,search,url,tel, vàemail, thuộc tínhdirnamecho phép gửi hướng của phần tử. Khi được bao gồm, điều khiển biểu mẫu sẽ gửi hai cặp name/value. disabled-
Thuộc tính Boolean, nếu có, chỉ ra rằng người dùng không thể tương tác với input. Input bị vô hiệu hóa thường được hiển thị với màu tối hơn.
form-
Chuỗi chỉ định phần tử
<form>mà input được liên kết. Giá trị phải khớp vớiidcủa phần tử<form>trong cùng tài liệu. formaction-
Chỉ hợp lệ cho loại input
imagevàsubmit. Xem loại input submit. formenctype-
Chỉ hợp lệ cho loại input
imagevàsubmit. Xem loại input submit. formmethod-
Chỉ hợp lệ cho loại input
imagevàsubmit. Xem loại input submit. formnovalidate-
Chỉ hợp lệ cho loại input
imagevàsubmit. Xem loại input submit. formtarget-
Chỉ hợp lệ cho loại input
imagevàsubmit. Xem loại input submit. height-
Chỉ hợp lệ cho nút input
image,heightlà chiều cao của tệp hình ảnh để hiển thị. Xem loại input image. id-
Thuộc tính toàn cục hợp lệ cho tất cả phần tử, định nghĩa định danh duy nhất (ID) phải là duy nhất trong toàn bộ tài liệu.
inputmode-
Giá trị toàn cục hợp lệ cho tất cả phần tử, cung cấp gợi ý cho trình duyệt về cấu hình bàn phím ảo khi chỉnh sửa phần tử này. Các giá trị bao gồm
none,text,tel,url,email,numeric,decimal, vàsearch. list-
Giá trị của thuộc tính
listphải làidcủa phần tử<datalist>trong cùng tài liệu.<datalist>cung cấp danh sách các giá trị được định nghĩa trước để gợi ý cho người dùng. max-
Hợp lệ cho
date,month,week,time,datetime-local,number, vàrange, xác định giá trị lớn nhất trong phạm vi giá trị được phép. maxlength-
Hợp lệ cho
text,search,url,tel,email, vàpassword, xác định độ dài chuỗi tối đa (tính bằng đơn vị mã UTF-16) mà người dùng có thể nhập vào trường. min-
Hợp lệ cho
date,month,week,time,datetime-local,number, vàrange, xác định giá trị nhỏ nhất trong phạm vi giá trị được phép. minlength-
Hợp lệ cho
text,search,url,tel,email, vàpassword, xác định độ dài chuỗi tối thiểu mà người dùng có thể nhập vào trường. multiple-
Thuộc tính Boolean
multiple, nếu được đặt, có nghĩa là người dùng có thể nhập địa chỉ email phân cách bằng dấu phẩy trong widget email hoặc chọn nhiều tệp với inputfile. name-
Chuỗi chỉ định tên cho điều khiển input. Tên này được gửi cùng với giá trị điều khiển khi dữ liệu biểu mẫu được gửi.
pattern-
Hợp lệ cho
text,search,url,tel,email, vàpassword, thuộc tínhpatternđược dùng để biên dịch biểu thức chính quy màvaluecủa input phải khớp để vượt qua xác thực ràng buộc. placeholder-
Hợp lệ cho
text,search,url,tel,email,password, vànumber, thuộc tínhplaceholdercung cấp gợi ý ngắn gọn cho người dùng về loại thông tin dự kiến trong trường. popovertarget-
Biến phần tử
<input type="button">thành nút điều khiển popover; nhận ID của phần tử popover cần điều khiển làm giá trị. popovertargetaction-
Chỉ định hành động thực hiện trên phần tử popover được điều khiển. Các giá trị có thể là
"hide","show", hoặc"toggle"(mặc định). readonly-
Thuộc tính Boolean, nếu có, chỉ ra rằng người dùng không thể chỉnh sửa giá trị của input.
required-
requiredlà thuộc tính Boolean, nếu có, chỉ ra rằng người dùng phải chỉ định giá trị cho input trước khi biểu mẫu có thể được gửi. size-
Hợp lệ cho
email,password,tel,url, vàtext, thuộc tínhsizechỉ định bao nhiêu input được hiển thị. src-
Chỉ hợp lệ cho nút input
image,srclà chuỗi chỉ định URL của tệp hình ảnh cần hiển thị. Xem loại input image. step-
Hợp lệ cho
date,month,week,time,datetime-local,number, vàrange, thuộc tínhsteplà số chỉ định độ chi tiết mà giá trị phải tuân thủ. switchExperimental Non-standard-
Chỉ hợp lệ cho input
checkbox,switchlà thuộc tính Boolean chỉ ra liệu input checkbox có nên được hiển thị dưới dạng switch không. tabindex-
Thuộc tính toàn cục hợp lệ cho tất cả phần tử, một thuộc tính integer chỉ ra liệu phần tử có thể nhận focus input không.
title-
Thuộc tính toàn cục hợp lệ cho tất cả phần tử bao gồm tất cả loại input, chứa văn bản thể hiện thông tin tư vấn liên quan đến phần tử.
type-
Chuỗi chỉ định loại điều khiển cần hiển thị. Ví dụ, để tạo checkbox, sử dụng giá trị
checkbox. Nếu bỏ qua, loại inputtextđược sử dụng. value-
Giá trị của điều khiển input. Khi được chỉ định trong HTML, đây là giá trị ban đầu, và từ đó có thể được thay đổi hoặc truy xuất bất cứ lúc nào bằng JavaScript.
width-
Chỉ hợp lệ cho nút input
image,widthlà chiều rộng của tệp hình ảnh để hiển thị. Xem loại input image.
Thuộc tính không chuẩn
Các thuộc tính không chuẩn sau cũng có sẵn trên một số trình duyệt. Thông thường nên tránh sử dụng chúng trừ khi không có cách khác.
| Thuộc tính | Mô tả |
|---|---|
incremental |
Liệu có gửi các sự kiện search lặp đi lặp lại để cho phép cập nhật kết quả tìm kiếm trực tiếp trong khi người dùng vẫn đang chỉnh sửa hay không.
Chỉ WebKit và Blink (Safari, Chrome, Opera, v.v.).
|
mozactionhint
Deprecated
|
Chuỗi chỉ ra loại hành động sẽ được thực hiện khi người dùng nhấn phím Enter hoặc Return. Vì thuộc tính này đã bị ngừng hỗ trợ, hãy dùng |
orient |
Đặt hướng của thanh trượt range. Chỉ Firefox. |
results |
Số lượng mục tối đa nên hiển thị trong danh sách thả xuống các truy vấn tìm kiếm trước đó. Chỉ Safari. |
webkitdirectory
|
Boolean chỉ ra liệu có chỉ cho phép người dùng chọn thư mục không. |
incrementalNon-standard-
Thuộc tính Boolean
incrementallà phần mở rộng WebKit và Blink, nếu có, báo cho user agent xử lý input như tìm kiếm trực tiếp. orientNon-standard-
Tương tự thuộc tính CSS không chuẩn
-moz-orient, thuộc tínhorientxác định hướng của thanh trượt range. Các giá trị bao gồmhorizontalvàvertical. resultsNon-standard-
Thuộc tính
results— chỉ được hỗ trợ bởi Safari — là giá trị số cho phép ghi đè số lượng mục tối đa được hiển thị trong menu thả xuống của các truy vấn tìm kiếm trước đó. webkitdirectoryNon-standard-
Thuộc tính Boolean
webkitdirectory, nếu có, chỉ ra rằng chỉ có thể chọn thư mục. XemHTMLInputElement.webkitdirectoryđể biết thêm chi tiết.
Phương thức
Các phương thức sau được cung cấp bởi giao diện HTMLInputElement:
checkValidity()-
Trả về
truenếu giá trị của phần tử vượt qua kiểm tra tính hợp lệ; ngược lại, trả vềfalsevà kích hoạt sự kiệninvalid. reportValidity()-
Trả về
truenếu giá trị của phần tử vượt qua kiểm tra tính hợp lệ; ngược lại, trả vềfalse, kích hoạt sự kiệninvalid, và báo cáo vấn đề cho người dùng. select()-
Chọn toàn bộ nội dung của phần tử
<input>, nếu nội dung phần tử có thể được chọn. setCustomValidity()-
Đặt thông báo tùy chỉnh để hiển thị nếu giá trị của phần tử input không hợp lệ.
setRangeText()-
Đặt nội dung của phạm vi ký tự được chỉ định trong phần tử input thành một chuỗi cho trước.
setSelectionRange()-
Chọn phạm vi ký tự được chỉ định trong phần tử input văn bản.
showPicker()-
Hiển thị bộ chọn trình duyệt cho phần tử input.
stepDown()-
Giảm giá trị của input số đi một, theo mặc định, hoặc theo số đơn vị được chỉ định.
stepUp()-
Tăng giá trị của input số lên một hoặc theo số đơn vị được chỉ định.
CSS
Input, là replaced elements, có một số tính năng không áp dụng cho các phần tử không phải biểu mẫu.
Pseudo-class giao diện người dùng
| Pseudo-class | Mô tả |
|---|---|
:enabled |
Bất kỳ phần tử nào hiện đang được bật có thể được kích hoạt. |
:disabled |
Bất kỳ phần tử nào hiện đang bị vô hiệu hóa. |
:read-only |
Phần tử không thể chỉnh sửa bởi người dùng |
:read-write |
Phần tử có thể chỉnh sửa bởi người dùng. |
:placeholder-shown |
Phần tử hiện đang hiển thị văn bản placeholder. |
:default |
Các phần tử biểu mẫu là mặc định trong nhóm các phần tử liên quan. |
:checked |
Các phần tử checkbox và radio input hiện đang được chọn. |
:indeterminate |
Các phần tử checkbox có thuộc tính indeterminate được đặt là true. |
:valid |
Các điều khiển biểu mẫu có thể áp dụng xác thực ràng buộc và hiện đang hợp lệ. |
:invalid |
Các điều khiển biểu mẫu có xác thực ràng buộc được áp dụng và hiện không hợp lệ. |
:in-range |
Input không rỗng có giá trị hiện tại trong phạm vi được chỉ định bởi `min` và `max`. |
:out-of-range |
Input không rỗng có giá trị hiện tại KHÔNG nằm trong phạm vi. |
:required |
Phần tử `` có thuộc tính required. |
:optional |
Phần tử `` KHÔNG có thuộc tính required. |
:blank |
Phần tử `` hiện không có giá trị. |
:user-invalid |
Tương tự `:invalid`, nhưng được kích hoạt khi blur. Khớp input không hợp lệ chỉ sau khi người dùng tương tác. |
:open |
Phần tử `` hiển thị bộ chọn — nhưng chỉ khi phần tử ở trạng thái mở, tức là khi bộ chọn được hiển thị. |
Ví dụ pseudo-class
Chúng ta có thể tạo kiểu cho nhãn checkbox dựa trên việc checkbox có được chọn hay không:
input:checked + label {
color: red;
font-weight: bold;
}
Bộ chọn thuộc tính
Có thể nhắm mục tiêu các loại điều khiển biểu mẫu khác nhau dựa trên type của chúng bằng bộ chọn thuộc tính:
/* khớp input password */
input[type="password"] {
}
/* khớp điều khiển biểu mẫu có phạm vi giá trị giới hạn */
input[min][max] {
}
/* khớp điều khiển biểu mẫu có thuộc tính pattern */
input[pattern] {
}
::placeholder
Theo mặc định, giao diện văn bản placeholder là xám nhạt hoặc trong suốt. Pseudo-element ::placeholder là văn bản placeholder của input.
::placeholder {
color: blue;
}
caret-color
Thuộc tính CSS caret-color cho phép đặt màu dùng để vẽ dấu nháy nhập văn bản:
HTML
<label for="textInput">Lưu ý dấu nháy màu đỏ:</label>
<input id="textInput" class="custom" size="32" />
CSS
input.custom {
caret-color: red;
font:
16px "Helvetica",
"Arial",
sans-serif;
}
Kết quả
field-sizing
Thuộc tính field-sizing cho phép kiểm soát hành vi kích thước của input biểu mẫu, cho phép các điều khiển biểu mẫu điều chỉnh kích thước để phù hợp với nội dung.
object-position và object-fit
Trong một số trường hợp (thường liên quan đến input không phải văn bản), phần tử <input> là replaced element. Khi đó, vị trí và kích thước của phần tử trong khung có thể được điều chỉnh bằng các thuộc tính CSS object-position và object-fit.
Tính năng bổ sung
>Nhãn
Nhãn cần thiết để liên kết văn bản trợ giúp với <input>. Phần tử <label> cung cấp thông tin giải thích về trường biểu mẫu.
Nhãn liên kết
Việc ghép cặp <input> và <label> hữu ích cho công nghệ hỗ trợ như trình đọc màn hình. Bằng cách ghép cặp chúng bằng thuộc tính for của <label>, bạn liên kết nhãn với input.
<!-- không thể tiếp cận -->
<p>Nhập tên của bạn: <input id="name" type="text" size="30" /></p>
<!-- nhãn ngầm định -->
<p>
<label>Nhập tên của bạn: <input id="name" type="text" size="30" /></label>
</p>
<!-- nhãn tường minh -->
<p>
<label for="name">Nhập tên của bạn: </label>
<input id="name" type="text" size="30" />
</p>
Placeholder không thể tiếp cận
Thuộc tính placeholder không phải là nhãn và không nên được dùng thay thế cho nhãn vì không thể tiếp cận được với trình đọc màn hình.
Note:
Đừng dùng thuộc tính placeholder nếu có thể tránh được. Nếu cần nhãn cho phần tử <input>, hãy dùng phần tử <label>.
Xác thực phía client
Warning: Xác thực phía client là hữu ích, nhưng không đảm bảo rằng server sẽ nhận được dữ liệu hợp lệ. Nếu dữ liệu phải ở định dạng cụ thể, luôn xác minh ở server.
Trình duyệt cung cấp xác thực phía client khi gửi biểu mẫu. Nếu có điều khiển biểu mẫu không vượt qua xác thực ràng buộc, các trình duyệt hỗ trợ sẽ hiển thị thông báo lỗi.
Đối tượng validityState bao gồm:
validityState.valueMissingvalidityState.typeMismatchvalidityState.patternMismatchvalidityState.tooLongvalidityState.tooShortvalidityState.rangeUnderflowvalidityState.rangeOverflowvalidityState.stepMismatchvalidityState.badInputvalidityState.validvalidityState.customError
function validate(input) {
let validityState = input.validity;
if (validityState.valueMissing) {
input.setCustomValidity("A value is required");
} else if (validityState.rangeUnderflow) {
input.setCustomValidity("Your value is too low");
} else if (validityState.rangeOverflow) {
input.setCustomValidity("Your value is too high");
} else {
input.setCustomValidity("");
}
}
Ví dụ lỗi xác thực tùy chỉnh
<form>
<label for="name">Enter username (upper and lowercase letters): </label>
<input type="text" name="name" id="name" required pattern="[A-Za-z]+" />
<button>Submit</button>
</form>
const nameInput = document.querySelector("input");
nameInput.addEventListener("input", () => {
nameInput.setCustomValidity("");
nameInput.checkValidity();
});
nameInput.addEventListener("invalid", () => {
if (nameInput.value === "") {
nameInput.setCustomValidity("Enter your username!");
} else {
nameInput.setCustomValidity(
"Usernames can only contain upper and lowercase letters. Try again!",
);
}
});
Note: Luôn xác thực các ràng buộc input ở cả phía client lẫn server. Xác thực ràng buộc không loại bỏ nhu cầu xác thực ở server.
Bản địa hóa
Các input được phép cho một số loại <input> phụ thuộc vào ngôn ngữ địa phương.
Khả năng tiếp cận
>Nhãn
Khi bao gồm input, đây là yêu cầu về khả năng tiếp cận để thêm nhãn đi kèm. Điều này cần thiết để những người dùng công nghệ hỗ trợ có thể biết input dùng để làm gì.
<label for="peas">Do you like peas?</label>
<input type="checkbox" name="peas" id="peas" />
Kích thước
Các phần tử tương tác như input biểu mẫu nên cung cấp khu vực đủ lớn để dễ dàng kích hoạt. Kích thước tương tác tối thiểu 44×44 CSS pixels được khuyến nghị.
Tóm tắt kỹ thuật
| Danh mục nội dung |
Flow content, listed, submittable, resettable, form-associated element,
phrasing content. Nếu type không phải
hidden, thì là labelable element, palpable content.
|
|---|---|
| Nội dung được phép | Không có; đây là void element. |
| Bỏ qua thẻ | Phải có thẻ mở và không được có thẻ đóng. |
| Phần tử cha được phép | Bất kỳ phần tử nào chấp nhận phrasing content. |
| Vai trò ARIA ngầm định |
|
| Giao diện DOM | HTMLInputElement |
Thông số kỹ thuật
| Specification |
|---|
| HTML> # the-input-element> |