Trong các bài học Bootstrap trước Taimienphi.vn đã hướng dẫn bạn cách tạo danh sách bằng Bootstrap. Trong bài học tiếp theo dưới đây Taimienphi.vn sẽ hướng dẫn bạn cách tạo form (biểu mẫu) trong Bootstrap.
Tạo form (biểu mẫu) trong Bootstrap
1. Tạo form (biểu mẫu) trong Bootstrap
Các form (biểu mẫu) HTML là một phần quan trọng trên các trang web và ứng dụng. Tuy nhiên việc tạo bố cục và kiểu dáng các biểu mẫu theo cách thủ công bằng CSS thường mất nhiều thời gian và tẻ nhạt.
Bootstrap đơn giản hóa các quá trình tạo kiểu và căn chỉnh các nút điều khiển biểu mẫu như nhãn, khung đầu vào, hộp kiểm, ... thông qua tập hợp các lớp được xác định trước.
Bootstrap cung cấp 3 loại bố cục form (biểu mẫu) khác nhau, bao gồm:
- Bố cục form theo chiều dọc (bố cục form mặc định).
- Bố cục form theo chiều ngang.
- Bố cục form nội tuyến.
2. Tạo bố cục form theo chiều dọc
Đây là dạng bố cục form mặc định trong Bootstrap, trong đó các style được áp dụng cho các lớp form-control mà không cần bổ sung thêm lớp cơ sở nào cho phần tử form.
Các lớp form-control trong dạng bố cục này được xếp chồng lên nhau với các nhãn left-aligned ở góc trên cùng.
Ví dụ: ví dụ dưới đây minh họa cách tạo bố cục form theo chiều dọc:
Kết quả trả về có dạng như dưới đây:
Lưu ý: Tất cả các thẻ bao gồm input, textarea và select đều yêu cầu lớp .form-control để tạo kiểu chung. Chiều rộng lớp .form-control là 100%. Để thay đổi chiều rộng của lớp, chúng ta có thể sử dụng các lớp lưới được xác định trước.
3. Tạo bố cục form theo chiều ngang
Ngoài ra chúng ta cũng có thể tạo bố cục form theo chiều ngang, trong đó các nhãn và nút điều khiển được đặt cạnh nhau bằng cách sử dụng các lớp lưới trong Bootstrap.
Để tạo bố cục form theo chiều ngang, chúng ta thêm lớp .row trên các lớp form-group và sử dụng lớp lưới .col-*-* để chỉ định chiều rộng cho các nhãn và nút điều khiển.
Đừng quên sử dụng lớp .col-form-label trên các phần tử label để căn chỉnh các nút điều khiển trong biểu mẫu. Tham khảo ví dụ dưới đây:
Kết quả trả về có dạng như dưới đây:
4. Tạo bố cục form nội tuyến
Trong một số trường hợp nếu muốn hiển thị một loạt các nhãn, nút điều khiển trên một hàng ngang để thu gọn bố cục. Để làm được điều này, chúng ta chỉ cần thêm lớp .form-inline vào phần tử form. Tuy nhiên bố cục form nội tuyến chỉ hiển thị trong viewport có chiều rộng tối thiểu 576px.
Ví dụ: trong ví dụ dưới đây chúng ta sẽ tạo một bố cục form nội tuyến:
Kết quả trả về có dạng như dưới đây:
Lưu ý: Taimienphi.vn khuyến cáo bạn nên thêm nhãn cho đầu vào form (biểu mẫu) nếu không trình đọc màn hình sẽ gặp sự cố với form mà bạn tạo. Tuy nhiên trong trường hợp nếu bố cục form nội tuyến, chúng ta có thể ẩn các nhãn bằng cách sử dụng lớp .sr-only.
5. Tạo form control tĩnh
Trong một số trường hợp nếu chỉ muốn hiển thị giá trị văn bản thuần túy (plain text) bên cạnh các form label thay vì form control. Để làm được điều này, chúng ta chỉ cần thay thế lớp .form-control bằng lớp .form-control-plaintext và áp dụng thuộc tính readonly.
Lớp .form-control-plaintext loại bỏ các style mặc định khỏi khung biểu mẫu nhưng vẫn giữ nguyên phần lề và phần padding.
Ví dụ: trong ví dụ dưới đây minh họa cách tạo form control tĩnh:
Kết quả trả về có dạng như dưới đây:
6. Hộp checkbox và nút radio
Hộp checkbox (hộp đánh tích) và các nút radio có thể được xếp theo chiều dọc hoặc chiều ngang.
6.1 Xếp các hộp checkbox và nút radio theo chiều dọc
Để xếp các hộp checkbox hoặc nút radio theo chiều dọc, tức là từng dòng một, chúng ta chỉ cần bọc tất cả các control trong một form group và áp dụng lớp d-block trong thẻ label.
Ngoài ra chúng ta có thể sử dụng các lớp tiện ích căn chỉnh để thiết lập khoảng cách phù hợp. Chẳng hạn như trong ví dụ dưới đây.
Ví dụ: trong ví dụ này các hộp checkbox và nút radio được xếp theo hàng dọc:
Kết quả trả về có dạng như dưới đây:
6.2 Xếp các hộp checkbox và nút radio theo chiều ngang
Để xếp hộp checkbox và nút radio theo chiều ngang, tức là đặt các hộp này cạnh nhau, chúng ta chỉ cần đặt tất cả các form control vào một form group và sử dụng các lớp tiện ích căn lề để đảm bảo khoảng cách phù hợp.
Ngoài ra trong trường hợp này chúng ta không cần sử dụng lớp .d-block trong phần tử label.
Ví dụ: trong ví dụ dưới đây chúng ta sẽ xếp các hộp checkbox và nút radio theo chiều ngang:
Kết quả trả về có dạng như dưới đây:
7. Tạo disabled form
Để vô hiệu hóa các form control như input, textarea, select, chúng ta chỉ cần thêm các thuộc tính disabled cho các form control này và Bootstrap sẽ thực hiện phần còn lại. Tham khảo ví dụ dưới đây:
Kết quả trả về có dạng như dưới đây:
Trong trường hợp nếu muốn vô hiệu hóa tất cả các control trong form cùng một lúc, chúng ta chỉ cần đặt các control này trong phần tử fieldset và áp dụng thuộc tính disabled như trong ví dụ dưới đây:
Kết quả trả về có dạng như dưới đây:
8. Tạo đầu vào chỉ đọc
Ngoài ra chúng ta có thể thêm thuộc tính readonly trong các thẻ input hoặc textarea để ngăn việc sửa đổi các giá trị của các thẻ này.
Cho ví dụ, trong ví dụ dưới đây chúng ta sẽ thêm thuộc tính readonly trong các thẻ input hoặc textarea để tạo đầu vào chỉ đọc:
Kết quả trả về có dạng như dưới đây:
9. Chỉ định kích thước cột của các form control Input, Textareas và Select
Để thiết lập kích thước của form control với kích thước cột lưới của Bootstrap, chúng ta chỉ cần bọc các form control, tức là input, textarea và select trong các cột lưới hoặc phần tử bất kỳ và áp dụng các lớp lưới trên đó.
Ví dụ: ví dụ dưới đây minh họa cách chỉ định kích thước cột của các fomr control Input, Textareas và Select:
Kết quả trả về có dạng như dưới đây:
Mẹo: ngoài ra chúng ta có thể thay thế lớp .form-row trong khi tạo bố cục biểu mẫu. Lớp .form-row là biến thể của lớp grid.row trong Bootstrap, ghi đè các khoảng trắng nằm giữa nội dung cột (gutter) để bố cục trong rõ ràng và gọn hơn.
10. Kích thước chiều cao của form control Input và Select
Để thay đổi chiều cao của băn bản đầu vào và các hộp kiểm sao cho phù hợp với kích thước của các nút, chúng ta sử dụng các lớp chỉ định kích thước chiều cao form control như .form-control-lg, .form-control-sm trên các hộp input và select để chỉ định kích thước lớn hơn hoặc nhỏ hơn.
Ngoài ra đừng quên áp dụng các lớp .col-form-label-sm hoặc .col-form-label-lg trên các phần tử label hoặc legend để thay đổi kích thước nhãnh chính xác cho form control.
Ví dụ: ví dụ dưới đây minh họa cách thay đổi kích thước chiều cao của form control Input và Select:
Kết quả trả về có dạng như dưới đây:
11. Vị trí text xung quanh Form Control
Thêm văn bản (text) xung quanh các form control cũng là một cách để hướng dẫn người dùng nhập các dữ liệu đầu vào trong biểu mẫu sao cho chính xác. Để thêm văn bản cho form control, chúng ta sử dụng lớp .form-text.
Ví dụ:
Kết quả trả về có dạng như dưới đây:
Tương tự, chúng ta cũng có thể sử dụng phần tử small để thêm văn bản mà không cần sử dụng lớp .form-text.
Ví dụ: trong ví dụ dưới đây chúng ta sử dụng phần tử small để thêm văn bản:
Kết quả trả về có dạng như dưới đây:
12. Tạo biểu mẫu xác thực bằng Bootstrap
Bootstrap 4 cung cấp các giải pháp để xác thực các biểu mẫu web ở phía máy khách một cách nhanh chóng và dễ dàng bằng cách sử dụng API xác thực biểu mẫu của trình duyệt để thực hiện.
Các lớp xác thực biểu mẫu trong CSS bao gồm :invalid và:valid pseudo-classes. Các lớp này được áp dụng cho các phần tử input, select và textarea.
Ví dụ: cho ví dụ dưới đây:
Kết quả trả về có dạng như dưới đây:
Lưu ý: với các thông báo xác thực biểu mẫu trong Bootstrap, chúng ta phải vô hiệu hóa các tooltip phản hồi mặc định của trình duyệt bằng thêm thuộc tính novalidate cho phần tử form.
Dưới đây là mã JavaScript tùy chỉnh hiển thị thông báo lỗi và vô hiệu hóa gửi biểu mẫu trong các trường không hợp lệ.
Mẹo: để reset lại giao diện biểu mẫu theo chương trình, chúng ta chỉ cần xóa lớp .was-validated khỏi phần tử form. Bootstrap áp dụng lớp này tự động trên biểu mẫu sau khi người dùng click chọn nút Submit (gửi).
Để yêu cầu xác thực phía máy chủ, chỉ cần sử dụng các lớp .is-invalid và .is-valid để hiển thị các mục trong khung là hợp lệ và không hợp lệ. Ngoài ra .invalid-feedback và .valid-feedback cũng hỗ trợ các lớp này.
Ví dụ:
Kết quả trả về có dạng như dưới đây:
Ngoài ra chúng ta có thể thay thế các lớp .{valid|invalid}-feedback bằng các lớp .{valid|invalid}-tooltip để hiển thị văn bản phản hồi theo kiểu tooltip.
Cần đảm bảo đã áp dụng style position: relative hoặc lớp .position-relative trên phần tử cha để hiển thị tooltip phản hồi đúng cách. Tham khảo ví dụ dưới đây:
Kết quả trả về có dạng như dưới đây:
13. Form Control được hỗ trợ trong Bootstrap
Bootstrap hỗ trợ tất cả các form control HTML chuẩn cũng như các dạng đầu vào HTML5 bao gồm datetime, number, email, url, search, range, color, url, ... .
Ví dụ: trong ví dụ dưới đây minh họa cách sử dụng form control chuẩn với Bootstrap.
Kết quả trả về có dạng như dưới đây:
Bài học trên đây Taimienphi.vn vừa hướng dẫn bạn cách tạo form (biểu mẫu) trong Bootstrap. Ngoài ra nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần giải đáp, bạn đọc có thể để lại ý kiến của mình trong phần bình luận bên dưới bài viết nhé.
Trong bài học Bootstrap tiếp theo Taimienphi.vn sẽ hướng dẫn tiếp bạn cách tạo form tùy chỉnh trong Bootstrap nhé.