Khám phá cách sử dụng biểu mẫu trong HTML và tất cả các thẻ thành phần biểu mẫu
Biểu mẫu là cách bạn có thể tương tác với một trang hoặc một ứng dụng, được xây dựng bằng công nghệ Web.
Bạn có một tập hợp các điều khiển và khi bạn gửi biểu mẫu, bằng một cú nhấp chuột vào nút “gửi” hoặc theo chương trình, trình duyệt sẽ gửi dữ liệu đến máy chủ.
Theo mặc định, việc gửi dữ liệu này khiến trang tải lại sau khi dữ liệu được gửi, nhưng bằng cách sử dụng JavaScript, bạn có thể thay đổi hành vi này (sẽ không giải thích cách thực hiện trong sách này).
Một biểu mẫu được tạo bằng cách sử dụngform
nhãn:
<form>
...
</form>
Theo mặc định, các biểu mẫu được gửi bằng phương thức GET HTTP. Cái nào cũng có nhược điểm và thường thì bạn muốn sử dụng POST.
Bạn có thể đặt biểu mẫu để sử dụng POST khi được gửi bằng cách sử dụngmethod
thuộc tính:
<form method="POST">
...
</form>
Biểu mẫu được gửi, bằng cách sử dụng GET hoặc POST, đến cùng một URL nơi nó cư trú.
Vì vậy, nếu biểu mẫu ởhttps://flaviocopes.com/contacts
, nhấn nút “gửi” sẽ yêu cầu đến cùng một URL đó.
Điều này có thể dẫn đến không có gì xảy ra.
Bạn cần một thứ gì đó phía máy chủ để xử lý yêu cầu và thông thường bạn “lắng nghe” các sự kiện gửi biểu mẫu đó trên một URL dành riêng.
Bạn có thể chỉ định URL thông quaaction
tham số:
<form action="/new-contact" method="POST">
...
</form>
Điều này sẽ khiến trình duyệt gửi dữ liệu biểu mẫu bằng cách sử dụng POST đến/new-contact
URL trên cùng một nguồn gốc.
Nếu nguồn gốc (giao thức + miền + cổng) làhttps://flaviocopes.com
(cổng 80 là mặc định), điều này có nghĩa là dữ liệu biểu mẫu sẽ được gửi đếnhttps://flaviocopes.com/new-contact
.
Tôi đã nói về dữ liệu. Dữ liệu nào?
Dữ liệu được cung cấp bởi người dùng thông qua tập hợp kiểm soát có sẵn trên nền tảng Web:
- hộp nhập liệu (văn bản một dòng)
- vùng văn bản (văn bản nhiều dòng)
- hộp chọn (chọn một tùy chọn từ menu thả xuống)
- nút radio (chọn một tùy chọn từ danh sách luôn hiển thị)
- hộp kiểm (chọn không, một hoặc nhiều tùy chọn)
- tải lên tệp
- và hơn thế nữa!
Hãy giới thiệu từng người trong số chúng trong phần tổng quan về các trường biểu mẫu sau đây.
Cácinput
nhãn
Cácinput
trường là một trong những phần tử biểu mẫu được sử dụng rộng rãi nhất. Nó cũng là một yếu tố rất linh hoạt và nó có thể thay đổi hoàn toàn hành vi dựa trêntype
thuộc tính.
Hành vi mặc định là điều khiển nhập văn bản một dòng:
<input />
Tương đương với việc sử dụng:
<input type="text" />
Như với tất cả các trường khác tiếp theo, bạn cần đặt tên cho trường để nội dung của nó được gửi đến máy chủ khi biểu mẫu được gửi:
<input type="text" name="username" />
Cácplaceholder
thuộc tính được sử dụng để hiển thị văn bản, có màu xám nhạt, khi trường trống. Hữu ích để thêm một gợi ý cho người dùng về những gì cần nhập:
<input type="text" name="username" placeholder="Your username" />
Sử dụngtype="email"
sẽ xác thực phía máy khách (trong trình duyệt) email về tính đúng đắn (tính đúng ngữ nghĩa, không đảm bảo địa chỉ email tồn tại) trước khi gửi.
<input type="email" name="email" placeholder="Your email" />
Mật khẩu
Sử dụngtype="password"
sẽ làm cho mọi khóa được nhập xuất hiện dưới dạng dấu hoa thị (*) hoặc dấu chấm, hữu ích cho các trường lưu trữ mật khẩu.
<input type="password" name="password" placeholder="Your password" />
Con số
Bạn có thể có một phần tử đầu vào chỉ chấp nhận các số:
<input type="number" name="age" placeholder="Your age" />
Bạn có thể chỉ định giá trị tối thiểu và tối đa được chấp nhận:
<input type="number" name="age" placeholder="Your age" min="18" max="110" />
Cácstep
thuộc tính giúp xác định các bước giữa các giá trị khác nhau. Ví dụ: điều này chấp nhận giá trị từ 10 đến 50, ở các bước 5:
<input type="number" name="a-number" min="10" max="50" step="5" />
Giấu trang
Các trường có thể bị ẩn khỏi người dùng. Chúng sẽ vẫn được gửi đến máy chủ sau khi gửi biểu mẫu:
<input type="hidden" name="some-hidden-field" value="some-value" />
Điều này thường được sử dụng để lưu trữ các giá trị như mã thông báo CSRF, được sử dụng để bảo mật và nhận dạng người dùng hoặc thậm chí để phát hiện rô bốt gửi thư rác, sử dụng các kỹ thuật đặc biệt.
Nó cũng có thể được sử dụng để xác định một biểu mẫu và hành động của nó.
Đặt giá trị mặc định
Tất cả các trường đó đều chấp nhận một giá trị được xác định trước. Nếu người dùng không thay đổi nó, đây sẽ là giá trị được gửi đến máy chủ:
<input type="number" name="age" value="18" />
Nếu bạn đặt trình giữ chỗ, giá trị đó sẽ xuất hiện nếu người dùng xóa giá trị trường đầu vào:
<input type="number" name="age" placeholder="Your age" value="18" />
Gửi biểu mẫu
Cáctype="submit"
trường là một nút, một khi người dùng nhấn, sẽ gửi biểu mẫu:
<input type="submit">
Cácvalue
thuộc tính đặt văn bản trên nút, nếu thiếu sẽ hiển thị văn bản "Gửi":
<input type="submit" value="Click me">
Xác thực biểu mẫu
Các trình duyệt cung cấp chức năng xác thực phía máy khách cho các biểu mẫu.
Bạn có thể đặt các trường theo yêu cầu, đảm bảo chúng được lấp đầy và thực thi một định dạng cụ thể cho đầu vào của mỗi trường.
Hãy xem cả hai tùy chọn.
Đặt các trường theo yêu cầu
Cácrequired
thuộc tính giúp bạn xác nhận. Nếu trường không được đặt, xác thực phía máy khách không thành công và trình duyệt không gửi biểu mẫu:
<input type="text" name="username" required />
Thực thi một định dạng cụ thể
Tôi đã mô tảtype="email"
trường trên. Nó tự động xác nhận địa chỉ email theo một định dạng được thiết lập trong thông số kỹ thuật.
bên trongtype="number"
trường, tôi đã đề cập đếnmin
vàmax
để giới hạn các giá trị được nhập vào một khoảng thời gian.
Bạn có thể làm nhiều hơn thế.
Bạn có thể thực thi một định dạng cụ thể trên bất kỳ trường nào.
Cácpattern
thuộc tính cung cấp cho bạn khả năng đặt một biểu thức chính quy để xác thực giá trị dựa trên.
Tôi khuyên bạn nên đọc Hướng dẫn về Cụm từ Thông dụng của tôi tạiflaviocopes.com/javascript-regular-expressions/.
pattern = “https: //.*”
<input type="text" name="username" pattern="[a-zA-Z]{8}" />
Các lĩnh vực khác
Tải lên tệp
Bạn có thể tải các tệp từ máy tính cục bộ của mình và gửi chúng đến máy chủ bằng cách sử dụngtype="file"
phần tử đầu vào:
<input type="file" name="secret-documents">
Bạn có thể đính kèm nhiều tệp:
<input type="file" name="secret-documents" multiple>
Bạn có thể chỉ định một hoặc nhiều loại tệp được phép sử dụngaccept
thuộc tính. Điều này chấp nhận hình ảnh:
<input type="file" name="secret-documents" accept="image/*">
Bạn có thể sử dụng một loại MIME cụ thể, nhưapplication/json
hoặc đặt một phần mở rộng tệp như.pdf
. Hoặc đặt nhiều phần mở rộng tệp, như sau:
<input type="file" name="secret-documents" accept=".jpg, .jpeg, .png">
nút
Cáctype="button"
Các trường đầu vào có thể được sử dụng để thêm các nút bổ sung vào biểu mẫu, không phải là các nút gửi:
<input type="button" value="Click me">
Chúng được sử dụng để lập trình làm điều gì đó, sử dụng JavaScript.
Có một trường đặc biệt được hiển thị dưới dạng nút, có hành động đặc biệt là xóa toàn bộ biểu mẫu và đưa trạng thái của các trường trở lại trạng thái ban đầu:
<input type="reset">
Các nút radio
Các nút radio được sử dụng để tạo một tập hợp các lựa chọn, trong đó một nút được nhấn và tất cả các nút khác bị tắt.
Cái tên này xuất phát từ những chiếc radio ô tô cũ có kiểu giao diện này.
Bạn xác định một tập hợptype="radio"
đầu vào, tất cả đều giống nhauname
thuộc tính và khác nhauvalue
thuộc tính:
<input type="radio" name="color" value="yellow">
<input type="radio" name="color" value="red">
<input type="radio" name="color" value="blue">
Sau khi biểu mẫu được gửi,color
thuộc tính dữ liệu sẽ có một giá trị duy nhất.
Luôn luôn có một phần tử được kiểm tra. Mục đầu tiên là mục được chọn theo mặc định.
Bạn có thể đặt giá trị được chọn trước bằng cách sử dụngchecked
thuộc tính. Bạn chỉ có thể sử dụng nó một lần cho mỗi nhóm đầu vào radio.
Hộp kiểm
Tương tự như hộp radio, nhưng chúng cho phép chọn nhiều giá trị hoặc không có giá trị nào cả.
Bạn xác định một tập hợptype="checkbox"
đầu vào, tất cả đều giống nhauname
thuộc tính và khác nhauvalue
thuộc tính:
<input type="checkbox" name="color" value="yellow">
<input type="checkbox" name="color" value="red">
<input type="checkbox" name="color" value="blue">
Tất cả các hộp kiểm đó sẽ được bỏ chọn theo mặc định. Sử dụngchecked
để kích hoạt chúng khi tải trang.
Vì trường đầu vào này cho phép nhiều giá trị, sau khi gửi biểu mẫu, (các) giá trị sẽ được gửi đến máy chủ dưới dạng một mảng.
Ngày và giờ
Chúng tôi có một số kiểu đầu vào để chấp nhận các giá trị ngày tháng.
Cáctype="date"
trường đầu vào cho phép người dùng nhập ngày và hiển thị bộ chọn ngày nếu cần:
<input type="date" name="birthday">
Cáctype="time"
trường đầu vào cho phép người dùng nhập thời gian và hiển thị bộ chọn thời gian nếu cần:
<input type="time" name="time-to-pickup">
Cáctype="month"
trường đầu vào cho phép người dùng nhập một tháng và một năm:
<input type="month" name="choose-release-month">
Cáctype="week"
trường đầu vào cho phép người dùng nhập một tuần và một năm:
<input type="week" name="choose-week">
Tất cả các trường đó cho phép giới hạn phạm vi và bước giữa mỗi giá trị. Tôi khuyên bạn nên kiểm tra MDN để biết chi tiết nhỏ về cách sử dụng của chúng.
Cáctype="datetime-local"
trường cho phép bạn chọn ngày và giờ.
<input type="datetime-local" name="date-and-time">
Đây là một trang để kiểm tra tất cả chúng:https://codepen.io/flaviocopes/pen/ZdWQPm
Bộ chọn màu
Bạn có thể cho phép người dùng chọn màu bằng cách sử dụngtype="color"
thành phần:
<input type="color" name="car-color">
Bạn đặt một giá trị mặc định bằng cách sử dụngvalue
thuộc tính:
<input type="color" name="car-color" value="#000000">
Trình duyệt sẽ quan tâm đến việc hiển thị bộ chọn màu cho người dùng.
Phạm vi
Phần tử đầu vào này hiển thị một phần tử thanh trượt. Mọi người có thể sử dụng nó để chuyển từ giá trị bắt đầu sang giá trị kết thúc:
<input type="range" name="age" min="0" max="100" value="30">
Bạn có thể cung cấp một bước tùy chọn:
<input type="range" name="age" min="0" max="100" value="30" step="10">
Điện thoại
Cáctype="tel"
trường đầu vào được sử dụng để nhập số điện thoại:
<input type="tel" name="telephone-number">
Điểm bán hàng chính để sử dụngtel
kết thúctext
trên thiết bị di động, nơi thiết bị có thể chọn hiển thị bàn phím số.
Chỉ định mộtpattern
thuộc tính để xác thực bổ sung:
<input type="tel" pattern="[0-9]{3}-[0-9]{8}" name="telephone-number">
URL
Cáctype="url"
trường được sử dụng để nhập URL.
<input type="url" name="website">
Bạn có thể xác nhận nó bằng cách sử dụngpattern
thuộc tính:
<input type="url" name="website" pattern="https://.*">
Cáctextarea
nhãn
Cáctextarea
phần tử cho phép người dùng nhập văn bản nhiều dòng. So vớiinput
, nó yêu cầu một thẻ kết thúc:
<textarea></textarea>
Bạn có thể đặt thứ nguyên bằng cách sử dụng CSS, nhưng cũng có thể sử dụngrows
vàcols
thuộc tính:
<textarea rows="20" cols="10"></textarea>
Như với các thẻ biểu mẫu khác,name
thuộc tính xác định tên trong dữ liệu được gửi đến máy chủ:
<textarea name="article"></textarea>
Cácselect
nhãn
Thẻ này được sử dụng để tạo menu thả xuống.
Người dùng có thể chọn một trong các tùy chọn có sẵn.
Mỗi tùy chọn được tạo bằng cách sử dụngoption
nhãn. Bạn thêm tên cho lựa chọn và giá trị cho mỗi tùy chọn:
<select name="color">
<option value="red">Red</option>
<option value="yellow">Yellow</option>
</select>
Bạn có thể đặt một tùy chọn bị vô hiệu hóa:
<select name="color">
<option value="red" disabled>Red</option>
<option value="yellow">Yellow</option>
</select>
Bạn có thể có một tùy chọn trống:
<select name="color">
<option value="">None</option>
<option value="red">Red</option>
<option value="yellow">Yellow</option>
</select>
Các tùy chọn có thể được nhóm lại bằng cách sử dụngoptgroup
nhãn. Mỗi nhóm tùy chọn có mộtlabel
thuộc tính:
<select name="color">
<optgroup label="Primary">
<option value="red">Red</option>
<option value="yellow">Yellow</option>
<option value="blue">Blue</option>
</optgroup>
<optgroup label="Others">
<option value="green">Green</option>
<option value="pink">Pink</option>
</optgroup>
</select>
Tải xuống miễn phí của tôiSổ tay HTML
Các hướng dẫn html khác:
- Giới thiệu về HTML
- Thẻ HTML `iframe`
- Biểu mẫu HTML
- Thẻ HTML `video`
- Thẻ HTML `audio`
- Các thẻ HTML cho văn bản
- Bảng HTML
- Thẻ HTML `img`
- Thẻ HTML `a`
- Thẻ HTML `ảnh`
- Thẻ HTML `figure`
- Thẻ vùng chứa HTML
- Khả năng truy cập trên Web
- Cách tạo bình luận trong HTML
- Cách thay đổi URL hình ảnh HTML ở chế độ tối
- Hình ảnh đáp ứng bằng cách sử dụng `srcset`
- Thay đổi biểu tượng yêu thích ở chế độ tối