Bài này nằm trong loạt bài chuẩn kiến thức để đi thi web mobile specialist của Google. Một số cách validate bằng HTML, sử dụng API kết hợp với javascript để custom lại theo ý muốn
Chúng ta cùng điểm qua các attribute mà HTML5 cung cấp để validate
type
Ngoài giá trị text
, chúng ta sẽ có thêm
email
: chỉ cho phép nhập địa chỉ emailnumber
: chỉ cho phép nhập sốurl
: chỉ cho phép nhập dạng đường dẫn urltel
: không nên xài, vì mỗi nước của một kiểu format số điện thoại riêng
Gửi
required
Một attribute đơn giản nhất, truyền vào một giá trị boolean
, bắt buộc user phải nhập giá trị nếu đang set true
Cafe hay Trà Đá? Gửi
Dùng CSS selector :valid
, :invalid
để format cho element
input:invalid { border: 2px solid red; } input:valid { border: 2px solid black; }
minlength, maxlength, min, max
Với chúng ta dùng
min
và max
để đặt ràng buộc khoảng giá trị, các ,
còn lại dùng
minlength
và maxlength
từ 3 đến 6 ký tựTừ 1 đến 10Gửi
CSS selector cho giá trị của element :in-range
, :out-of-range
input:out-of-range { border: 2px solid red; } input:in-range { border: 2px solid black; }
pattern
Truyền vào một regular expression, chỉ có trên , không
sử dụng được với
Bạn chỉ có thể nhập "cherry" hoặc "banana" Gửi
Ví dụ một số regular expression hay xài
Số điện thoại Việt Nam
Chỉ gồm số và chữ
Giá trị Hex Color như #3b5998
hoặc #000
.
Gợi ý
Sử dụng title
để hiển thị một tooltip cho user biết chúng ta muốn user nhập vào giá trị gì
Customize câu hiển thị lỗi
Khi element invalid, nó sẽ hiện một câu thông báo kèm theo trên element, cái này phụ thuộc vào từng trình duyệt, không thể chỉnh lại bằng CSS, trình duyệt đang set ngôn ngữ gì thì nó hiển thị câu lỗi bằng ngôn ngữ đó, không đi theo ngôn ngữ khai báo của trang web.
Để thay đổi nội dung của câu thông báo, chúng ta buộc phải dùng javascript
Khá nhiều trình duyệt hiện tại cung cấp API để làm việc với validation, để đối phó với các trình duyệt cũ thì tất nhiên chúng ta dùng đến polyfill như Hyperform
Chúng ta cùng làm thử một custom error.
Đầu tiên là html
Vui lòng nhập địa chỉ email:
Gửi
Chúng ta khai báo novalidate
để tắt validate của trình duyệt.
Javascript sử dụng API của trình duyệt để tương tác với validate của HTML5
var form = document.getElementsByTagName['form'][0]; var email = document.getElementById['mail']; var error = document.querySelector['.error']; email.addEventListener["input", function [event] { // kiểm tra khi user bắt đầu nhập if [email.validity.valid] { // nếu valid, remove error.innerHTML = ""; error.className = "error"; } }, false]; form.addEventListener["submit", function [event] { // kiểm tra khi user click submit. if [!email.validity.valid] { error.innerHTML = "Baby à, cho anh địa chỉ email chứ"; error.className = "error active"; // chặn việc submit form event.preventDefault[]; } }, false];
Demo
TopDev via Vuilaptrinh