Màu sắc HTML (Bài trước)

Khái niệm web form

Biểu mẫu - web form - được tạo ra trong HTML là khu vực hình thành nên sự tương tác giữa người dùng và ứng dụng web. Các form cho phép người dùng nhập dữ liệu vào, sau đó gửi dữ liệu đó cho web server, hoặc nhập dữ liệu vào sử lý dữ liệu ngay tại client side.

form trong HTML được tạo ra bằng thẻ <form>, bên trong form đó nó chứa một hoặc nhiều phần tử để nhập liệu gọi là các điều khiển (control), có nhiều loại điều khiển như:

Điều khiển Ví dụ
Điều khiển nhập một dòng text (TextBox)
Điều khiển cho nhập nhiều dòng text (textarea)
Điều khiển là các nút bấm (button)
Các phần tử checkbox (hộp chọn)
Các phần tử radio (chọn một):
Danh sách đổ xuống
... và một số điều khiển khác ...

Hầu hết các control (điều khiển) để người dùng nhập thông tin, dữ liệu được tạo ra bằng thẻ HTML <input> và đi cùng nó thường là phần tử <label> để tạo ra nhãn (tiêu đề) cho control.

Thẻ <form>, tạo web form đầu tiên

Để tạo ra HTML Form thì dùng đến thẻ <form>, sau đó nội dung trong thẻ trình bày các HTML và các phần tử là điều khiển (control) có trong form.

<form action="http://xuanthulab.net/" method="post">
  <!--Các mã HTML, các phần tử trong form -->
</form>

Thẻ <form> cơ bản có hai thuộc tính cần lưu tâm là action và method:

  • Thuộc tính action trong form: thuộc tính để thiết lập URL sẽ nhận dữ liệu, là địa chỉ mà dữ liệu của form gửi đến (submit đến, post đến). Thiếu tham số này thì action bằng URL đang truy cập (tức gửi thông tin form đến server theo địa chỉ đang truy cập). Web server nhận được dữ liệu, xử lý và trả về nội dung nào đó.
  • Thuộc tính method trong form: thuộc tính để thiết lập HTTP Method, xem thêm HTTP Request Message thường có giá trị bằng get hoặc post. Nếu không viết thuộc tính này thì method mặc định của form là get

    Sử dụng method="get" thì khi submit dữ liệu được biểu diễn (encoding) thông qua URL (người dùng thấy rõ dữ liệu trên thanh địa chỉ trình duyệt khi nó gửi đi). Sử dụng method="post" thì khi submit biểu diễn trong nội dung của Http Request gửi đến Server và là ẩn với người dùng. Sử dụng post an toàn hơn.

Khi thông tin gửi tới địa chỉ máy chủ (địa chỉ trong thuộc tính action), thì dự liệu nhận được xử lý thế nào là việc của server, bạn sẽ thực hiện việc sử lý này khi lập trình backend với một ngôn ngữ lập trình nào đó như php, c# ... Ở đây, để nhanh chóng kiểm tra xem server nhận được dữ liệu FORM gửi đến như thế nào bạn có thể sử dụng httpbin hoặc gửi thẳng đến địa chỉ : https://httpbin.org/anything để kiểm tra FORM của mình

Ví dụ tạo form html

Ví dụ FORM HTML sau yêu cầu người dùng điền tên đăng nhập, password và bấm vào nút Đăng nhập để gửi đi.

<form action="https://httpbin.org/anything" method="get">
    <label for="name">Tên đăng nhập:</label><br>
    <input id="name" name="name" type="text" value=""><br>

    <label>Mật khẩu:</label><br>
    <input name="pass" type="password" value=""><br>

    <input type="submit" name="submit" value="Đăng Nhập" />
</form>




(Bạn có thể điền thông tin và bấm vào nút đăng nhập để kiểm tra dữ liệu gửi đến server)

form

Với FORM HTML trên, nó có ba điều khiển (control), đều được tạo ra từ thẻ <input> chúng được đặt tên thông qua thuộc tính name gồm: name, pass, submit. Tên này coi như tên trường dữ liệu mà FORM sẽ gửi đi. Khi bấm gửi dữ liệu (submit dữ liệu) ở trên là nút (Đăng nhập) thì dữ liệu trong các control sẽ được gửi đi, khi gửi đi mỗi dữ liệu gồm tên và giá trị.

Giả sử bạn nhập vào tên là test, mật khẩu là abc rồi bấm vào Đăng nhập. Form trên gửi bằng phương thức get, do vậy dữ liệu trong FORM sẽ nằm trong cấu trúc URL gửi đến server. Bạn sẽ thấy ngay địa chỉ trình duyệt sẽ có dạng

https://httpbin.org/anything?name=test&pass=abc

Bạn thấy các dữ liệu trong thẻ input đã được biểu diễn bằng URL với tên dữ liệu tương ứng với tên của input là: name, pass

Trong trường hợp bạn chọn method là post thì sẽ không nhìn thấy dữ liệu biểu diễn qua URL như thế này mà dữ liệu được tích hợp vào cấu trúc của HTTP Request. Sẽ là ẩn với người dùng.

Sửa lại ví dụ trên (đổi sang phương thức post), bạn thử submit lại để kiểm tra:

<form action="https://httpbin.org/anything" method="post">
    <p>FORM này gửi dữ liệu bằng phương thức POST (an toàn hơn)</p>
    <label for="name">Tên đăng nhập:</label><br>
    <input id="name" name="name" type="text" value=""><br>

    <label>Mật khẩu:</label><br>
    <input name="pass" type="password" value=""><br>

    <input type="submit" name="submit" value="Đăng Nhập" />
</form>

FORM này gửi dữ liệu bằng phương thức POST (an toàn hơn)





Tạo nút bấm để gửi (submit) form HTML, reset form

Để có nút bấm submit, bấm vào đó dữ liệu của form được thu thập và gửi đi thì bạn có thể dùng thẻ <input> hoặc thẻ <button>:

Nút bấm bằng thẻ <input>

Thẻ <input> là thẻ rỗng (không có đóng thẻ), cú pháp là <input các-thuộc-tính />

Tạo nút bấm gửi (submit) thì cho thuộc tính type="submit", còn nhãn nút bấm thiết lập qua thuộc tính value="Text", Ví dụ:

<input type="submit"  value="Gửi dữ liệu" />

Tạo nút bấm, bấm vào đó toàn bộ dữ liệu trong các control của FORM bị xóa đi về mặc định, để nhập lại thì thuộc tính type thiết lập bằng reset

<input type="reset" value="Nhập lại" />

Chú ý, nếu các nút bấm trên bạn cho thêm thuộc tính name, ví dụ name="submit", name="reset" thì dữ liệu (trong value) của nút bấm cũng được gửi đi cùng các dữ liệu khác.

Sử dụng thẻ <button> tạo nút bấm

Thẻ <button> chuyển tạo ra các điều khiển nút bấm trong HTML FORM, thẻ này có đóng thẻ, do vậy button có thể chứa nội dung phong phú để trình bày nút bấm hơn <input>

Để tạo ra nút bấm submit và reset tương tự như <input> chỉ việc thiết lập giá trị submit hay reset cho thuộc tính type

<button type="submit">Gửi</button>
<button type="reset">Nhập lại</button>

Kết quả

Thẻ <button> tạo ra nút bấm trình bày phức tạp hơn, do nó chứa được nội dung HTML

<button type="submit">
    <img src="/public/img/logo.png" style="width: 80px !important;">
    Gửi <strong style="color: red">dữ liệu</strong>
</button>

Phần sau sẽ tìm hiểu các phần tử trong FORM (các phần tử để nhập liệu).

Các phần tử điều khiển trong FORM

Các phần tử điều khiển trong FORM là nơi mà người dụng nhập dữ liệu, lựa chọn dữ liệu, thông tin trong các điều khiển này sẽ được tập hợp lại để gửi đi, để tạo ra các điều khiển ta dùng các thẻ như: <input> <textarea> <select> <button> <datalist> <label> <fieldset> <datalist> ...

Tất nhiên trong FORM có thể chứa bất kỳ nội dung HTML nào, nhưng chỉ để trình bày,còn các HTML tạo control mới có chức năng nhập liệu.

Ở đây chỉ trình bày nguyên tắc chính tạo control, còn chi tiết sử dụng từng loại thẻ xem ở các bài viết tương ứng cho từng thẻ đó.

Mỗi phần tử là control của form để người dùng nhập dữ liệu thì phần tử đó cần có thuộc tính name là tên của phần tử, cũng là tên trường dữ liệu cần nhập, tên trường dữ liệu FORM sẽ gửi đi. Như ví dụ:

<input name="name" type="text" value="">

Nó tạo ra một textbox, đặt tên là name, nó cũng là tên trường dữ liệu gửi đi. Trong control thiếu trường này, thì dù bạn nhập dữ liệu vào, thì nó cũng sẽ không được gửi đi.


Để thêm các control cụ thể vào HTML Form, hãy xem chi tiết tại:

Loại điều khiển Hiện thị Chi tiết
Nhãn điều khiển Label - Tạo nhãn
TextBox Tạo TextBox
Password Nhập Password
Radio Nam
Nữ
Khác
Lựa chọn Radio
CheckBox Tôi thích PHP
Tôi thích HTML
Tôi thích CSS
Lựa chọn checkbox
Color Chọn màu
Date Chọn ngày tháng
Time Chọn thời gian
Email Nhập email
Search Hộp tìm kiếm
PhoneNumber Nhập số điện thoại
Number Hộp nhập số
Slider Thanh trượt chọn giá trị
File Chọn file upload
Url Hộp nhập URL
Multi-line text
Drop-down Hộp thả xuống

Đăng ký nhận bài viết mới
Màu sắc HTML (Bài trước)