Showing posts with label input. Show all posts
Showing posts with label input. Show all posts

Wednesday, November 13, 2013

Thuộc tính value trong thẻ input

Thuộc tính value là thuộc tính quan trọng trong thẻ input, chức năng của nó còn tùy thuộc vào loại thẻ input type cụ thể.

Code mẫu

<form action="#">
<label>Nam:<input type="radio" name="gioi" value="nam"></label><br />
<label>Nữ:<input type="radio" name="gioi" value="nu"></label><br />
<input type="submit" value="Gửi">
</form>

Kết quả:



Trình duyệt hỗ trợ

Thuộc tính value được tất cả các trình duyệt phổ thông hỗ trợ, trong đó có Chrome, FireFox, Opera, Safari và IE.

Cách dùng

Như đã nói ở phần đầu tùy loại input mà thuộc tính value có tác dụng khác nhau:

A. Trong các nút reset và submit thì value có tác dụng hiển thị đoạn text trên nút nhấn. Ví dụ:


Code:

<form>
<input type="reset" value="Reset" />
<input type="submit" value="Submit" />
</form>

B. Cho input kiểu text, password và hidden thì value xác định giá trị ban đầu của trường. Ví dụ:



Code:

<label>Họ tên: <input type="text" value="Nguyễn Đức Anh" /></label>

C. Cho input kiểu checkbox, radio và image thì value xác định giá trị của các trường đó, và sẽ là thông tin được gửi đi khi submit. Ví dụ:






Code:

<label>Xe máy<input name="phuongtien" type="checkbox" value="xemay" /></label><br />
<label>Xe bus<input name="phuongtien" type="checkbox" value="xebus" /></label><br />
<label>Xe đạp<input name="phuongtien" type="checkbox" value="xedap" /></label><br />
<label>Đi bộ<input name="phuongtien" type="checkbox" value="dibo" /></label>

Các input type kiểu text, password hay hidden có thể không cần thuộc tính value vẫn OK, nhưng input kiểu checkbox và radio, thuộc tính value là bắt buộc, vì nếu không có thì nó sẽ gửi giá trị rỗng khi submit.

Thông tin cuối cùng, thuộc tính value không được phép sử dụng với <input type="file">

Tuesday, November 12, 2013

Thuộc tính placeholder của thẻ input

Thuộc tính placeholder là thuộc tính mới trong HTML5 dành cho thẻ input. Tác dụng của placeholder là cung cấp thêm thông tin cho người dùng, giúp họ biết cần nhập dữ liệu gì.
Code mẫu:

<form action="#">
<label>Họ tên:<input type="text" name="hoten" placeholder="Điền đầy đủ họ tên"></label>
<label>Quê quán:<input type="text" name="quequan" placeholder="Quê trong Chứng Minh Thư"></label>
<input type="submit" value="Gửi">
</form>

Kết quả:




Khi người dùng bắt đầu nhập liệu, thông tin gợi ý sẽ biến mất.

Trình duyệt hỗ trợ

Được hầu hết các trình duyệt hỗ trợ trong đó có: Internet Explorer 10, Firefox, Opera, Chrome và Safari. Chú ý là IE 9 và các phiên bản sớm hơn không được hỗ trợ.

Những thẻ input type dùng placeholder

Gồm các input type sau: text, search, url, tel, email và password.

Thuộc tính required của thẻ input

Thuộc tính required là thuộc tính mới trong HTML5 dành cho thẻ input. Tác dụng của required là buộc người dùng phải nhập dữ liệu thì mới gửi được (submit). Dĩ nhiên thao tác này đỡ cho chúng ta khá nhiều code JavaScript.
Code mẫu:

<form action="#">
   <label>Họ tên:<input type="text"  name="hoten" required></label>
   <input type="submit" value="Gửi">
</form>

Kết quả:


Giờ bạn không điền gì vào trường Họ tên, rồi nhấn nút Gửi thử xem, bạn sẽ nhận được thông báo kiểu như "Vui lòng điền vào trường này"

Trình duyệt hỗ trợ

Thuộc tính required được Internet Explorer 10, Firefox, Opera và Chrome hỗ trợ, đáng tiếc hiện Safari chưa đưa tính năng này vào. Nhưng tôi nghĩ sớm muộn gì Safari cũng cập nhật, vì những thuộc tính mới của input rất hữu ích với người thiết kế và người dùng.

Những thẻ input type dùng requried

Các input sau đây dùng thuộc tính requried: text, checkbox, radio, email, password, search, url, tel, date pickers, number,  file.

Cách dùng

Required là thuộc tính kiểu boolean, nghĩa là nó chỉ nhận 2 giá trị có hoặc không có. Nếu không có requried trong thẻ input nghĩa là không yêu cầu phải nhập đủ dữ liệu, ngược lại nếu có thì phải nhập đủ mới được Submit.

Có sự khác biệt giữa XHTML và HTML. Vì XHTML không cho phép rút gọn thuộc tính cho nên với XHTML chúng ta phải viết đầy đủ như sau: <input required="required" />

Sunday, November 10, 2013

9 thẻ input thường dùng trong HTML

Các thẻ input type chuyên dụng trong các form, dùng để nhập liệu, kiểu như: đăng ký, đăng nhập, liên hệ, gửi file...Hôm nay chúng ta sẽ xem xét các thẻ input phổ biến nhất.

Các input đều giống nhau về cấu trúc, chỉ khác nhau về type. Chính type này quyết định kiểu của input. Có đến hơn 20 type khác nhau. Một số type input chỉ được hỗ trợ trong HTML5. Các type giới thiệu trong ngày hôm nay được tất cả các trình duyệt thông dụng hỗ trợ.

Nhập text

Ví dụ:

Họ tên:

Code mẫu:

Họ tên: <input name="hoten" type="text" />

Giá trị của thuộc tính name sẽ được dùng để lấy giá trị input, cả PHP và JavaScript đều căn cứ vào name để biết giá trị nằm trong input.

Nhập password

Ví dụ:

Mật khẩu:

Code mẫu:

<input name="psw" type="password" />

Vì là nhập password nên khi bạn gõ vào trường này nó sẽ hiện ra các dấu hoa thị *, để người khác không nhìn thấy mật khẩu.

File đính kèm

Ví dụ:

Chọn ảnh của bạn:

Code mẫu:

<input type="file" name="anh">

Button reset

Tác dụng của nút nhấn reset là xóa các dữ liệu mà bạn nhập không đúng, giả dụ nhập tên và quê quán vào 2 trường dưới đây, rối nhấn reset xem điều gì xảy ra:

Họ tên:
Quê quán:
Code mẫu:

<form action="#">
Họ tên: <input type="text" name="hoten"><br />
Quê quán: <input type="text" name="que"><br />
<input type="reset" value="Reset">
</form>

Button submit

Tác dụng của nút nhấn submit là gửi dữ liệu, khi bạn nhập đầy đủ các trường, và nhấn submit thì dữ liệu từ các trường bạn nhập sẽ được gửi đến đâu đó để xử lý tiếp. Có thể nó sẽ được Validate bằng JavaScript để chuẩn hóa, sau đó gửi lên Server để ghi thông tin vào cơ sở dữ liệu bằng PHP (hoặc ngôn ngữ lập trình web khác).

Ví dụ:
Tên đăng nhập:
Mật khẩu:

Code mẫu:

<form action="#">
Tên đăng nhập: <input name="user" type="text" /><br />
Mật khẩu: <input name="pass" type="text" /><br />
<input type="submit" value="Submit" />
</form>

Ẩn input

Họ tên:
Code mẫu:

<form action="#">
Họ tên: <input type="text" name="hoten"><br>
<input type="hidden" name="quocgia" value="Việt Nam">
<input type="submit" value="Submit">
</form>

Bạn có thể thấy input có name là quocgia bị ẩn không hiện trong form. Tuy bị ẩn nhưng nếu chúng ta Submit nó giá trị "Việt Nam" vẫn được gửi đi.

Radio button

Dùng để chọn chỉ 1 trong nhiều lựa chọn, ví dụ:

Nam
Nữ
Khác

Code mẫu:

<form action="#">
<input name="gioitinh" type="radio" value="Nam" />Nam<br />
<input name="gioitinh" type="radio" value="Nữ" />Nữ<br />
<input name="gioitinh" type="radio" value="Khác" />Khác
</form>

Checkbox

Dùng để chọn nhiều lựa chọn cùng lúc, có thể 1 hoặc nhiều, ví dụ:

Bóng đá
Bơi lội
Điền kinh
Cầu lông
Võ thuật

Code mẫu:

<form action="#">
<input name="thethao" type="checkbox" value="Bóng đá" />Bóng đá<br />
<input name="thethao" type="checkbox" value="Bơi lội" />Bơi lội<br />
<input name="thethao" type="checkbox" value="Điền kinh" />Điền kinh<br />
<input name="thethao" type="checkbox" value="Cầu lông" />Cầu lông<br />
<input name="thethao" type="checkbox" value="Võ thuật" />Võ thuật
</form>

Thông tin đầy đủ hơn về Checkbox và Radio button bạn có thể đọc để tham khảo thêm.

Email

Type cuối cùng tôi đề cập là email, sở dĩ như vậy vì type này chỉ được hỗ trợ trong HTML5 - tuy nhiên nói là vậy thôi, chứ chúng ta cũng không phải lo gì cả, vì input email đã được support tốt bới các trình duyệt. Code mẫu:

<form action="#">
Email: <input name="email" type="email" />
<input type="submit">
</form>

Kết quả:

Email:
Nó validate email cho chúng ta rồi, nên bạn không cần viết JavaScript - trừ khi bạn muốn chuẩn hóa dữ liệu nhập vào cao hơn nữa.

Friday, November 8, 2013

Thẻ radio button và checkbox trong HTML

Thực ra chúng đều thuộc về nhóm thẻ input nhưng có thuộc tính type là radio button và checkbox. Nhóm thẻ input là không thể thiếu khi muốn làm Form nhập liệu và chúng thường xuyên kết hợp với Javascript để validate. Bên cạnh 5 type rất hay dùng gồm: text, password, submit, reset và email thì 2 type chuyên dụng để tạo các lựa chọn là Radio button và Checkbox bạn cũng cần nắm rõ.

Radio button

Type này được dùng để chọn một trong nhiều lựa chọn, chẳng hạn chọn giới tính, chọn quốc gia đang sinh sống. Code mẫu:

<form>
<input name="gioitinh" type="radio" value="Nam" />Nam<br />
<input name="gioitinh" type="radio" value="Nữ" />Nữ<br />
<input name="gioitinh" type="radio" value="Khác" />Khác
</form>

Kết quả:

Nam
Nữ
Khác

Nếu bạn không để name có cùng tên thì bạn sẽ chọn được 2 cái cùng lúc, do vậy cần lưu ý name khi dùng radio.

Checkbox

Radio buttons dùng để chọn chỉ một cái trong nhiều lựa chọn còn checkbox thì ngược lại, nó cho phép bạn không chọn lựa cái nào hoặc chọn nhiều cái (từ một cho đến tất cả), code mẫu:

<form>
<input type="checkbox" name="thethao" value="Bóng đá">Bóng đá<br>
<input type="checkbox" name="thethao" value="Bơi lội">Bơi lội<br>
<input type="checkbox" name="thethao" value="Điền kinh">Điền kinh<br>
<input type="checkbox" name="thethao" value="Cầu lông">Cầu lông<br>
<input type = "checkbox" name= "thethao" value="Võ thuật">Võ thuật
</form>

Kết quả:

Bóng đá
Bơi lội
Điền kinh
Cầu lông
Võ thuật

Thuộc tính checked

Đây là thuộc tính được dùng để đánh dấu trước một lựa chọn nào đó, chẳng hạn một Form nhập liệu yêu cầu bạn nhập Quốc gia đang sinh sống, nhưng nó cũng xác định được địa chỉ IP của bạn xuất phát từ Việt Nam nên đã tick sẵn vào đây từ trước cho bạn. Điều này giúp bạn giảm thiểu các thao tác phải nhập. Ví dụ:

Việt Nam
Trung Quốc
Nhật Bản
Hàn Quốc

Code mẫu:

<form>
<input checked="checked" name="gioitinh" type="radio" value="VN" />Việt Nam<br />
<input name="gioitinh" type="radio" value="TQ" />Trung Quốc<br />
<input name="gioitinh" type="radio" value="NB" />Nhật Bản<br />
<input name="gioitinh" type="radio" value="HQ" />Hàn Quốc
</form>

Saturday, October 19, 2013

Tạo Form đăng ký bằng Javascript và thẻ input


Họ:
Tên:
Email:
Số Điện Thoại:
Số Lượng Mua:
Ngày Nhận Hàng:
Thanh Toán: Chuyển Khoản Trực Tiếp Khi Giao Hàng

Làm form bằng HTML và chỉnh sửa lại giao diện cho đẹp với CSS không khó, bạn chỉ cần nhớ mấy cái input type là OK. Vấn đề nằm ở Validate, tức là chuẩn hóa dữ liệu nhập vào và một số yêu cầu khác nữa. HTML5 làm form cũng rất tốt, nhưng có hạn chế là chưa được hỗ trợ rộng rãi và thống nhất giữa các trình duyệt, do vậy chúng ta vẫn phải cậy nhờ khá nhiều vào Javascript. Về sau bạn sẽ biết ngoài việc bắt lỗi dữ liệu tại máy khách thì chúng ta còn phải kiểm tra dữ liệu một lần nữa tại Server cho chắc ăn bằng một ngôn ngữ lập trình web kiểu như PHP hoặc ASP.Net...Nhưng đấy là về sau! Hiện tại chúng ta chỉ quan tâm tới Javascript thôi nhé.

Có vẻ chém gió hơi nhiều, giờ sẽ vào đề ngay. Chẳng hạn tôi có Form như đầu bài. Chúng ta phải bắt lỗi trong các trường hợp sau:
  • Người dùng không nhập dữ liệu
  • Người dùng không nhập đúng chuẩn email dạng aaa@bbb.ccc
  • Người dùng nhập chữ vào Số điện thoại hoặc nhập hơn 11 số
  • Người dùng nhập chữ vào Số lượng mua, hoặc con số nhỏ hơn hoặc bằng 0, hoặc lớn hơn hoặc bằng 100
  • Ngày nhận hàng không hợp chuẩn
  • Người dùng không chọn bất cứ hình thức thanh toán nào
Thực tế là tôi đã viết code Javascript cho Form trên rồi, giờ bạn nhấn nút Đăng Ký Mua là biết liền, và thử xem nó có bắt lỗi đúng như yêu cầu không. Code mẫu:
<script type="text/javascript">
// JavaScript Document
    function validateForm() {
        //Họ phải được điền
        var ho = document.forms["myForm"]["ho"].value;
        if (ho == "") {
            alert("Họ không được để trống");
            return false;
        }
        //Tên phải được điền
        var ten = document.forms["myForm"]["ten"].value;
        if (ten == "") {
            alert("Tên không được để trống");
            return false;
        }
        //Email phải được điền chính xác
        var email=document.forms["myForm"]["email"].value;
        var aCong=email.indexOf("@");
        var dauCham = email.lastIndexOf(".");
        if (email == "") {
            alert("Email không được để trống");
            return false;
        }
        else if ((aCong<1) || (dauCham<aCong+2) || (dauCham+2>email.length)) {
              alert("Email bạn điền không chính xác");
              return false;
          }
          //Nhập số điện thoại
          var dienThoai = document.forms["myForm"]["dienThoai"].value;
          var kiemTraDT = isNaN(dienThoai);
          if (dienThoai == "") {
              alert("Điện thoại không được để trống");
              return false;
          }
          if (kiemTraDT == true) {
              alert("Điện thoại phải để ở định dạng số");
              return false;
          }
          //Nhập số lượng muốn mua
          var soLuong = document.forms["myForm"]["soLuong"].value;
          var kiemTraSL = isNaN(soLuong);
          if ((soLuong == "") || (soLuong <= 0)) {
              alert("Số lượng không được để trống và phải lớn hơn 0");
              return false;
          }
          if (soLuong > 100) {
              alert("Số lượng mua không được lớn hơn 100");
              return false;
          }
          if (kiemTraSL == true) {
              alert("Số lượng mua phải để ở định dạng số");
              return false;
          }
          //Chọn ngày nhận hàng
   var nm = document.forms["myForm"]["ngaymua"].value;
   if (nm == "") {
    alert("Ngày không được để trống");
    return false;
    }
    //Chọn kiểu thanh toán
          var ck = document.getElementById("ck");
          var tt = document.getElementById("tt");
    if ((ck.checked == false) && (tt.checked == false)) {
     alert("Bạn phải chọn một kiểu thanh toán");
     return false;
     }
}
</script>

<br />
<form action="#" method="post" name="myForm" onsubmit="return validateForm()">
<table bgcolor="#DDDDDD" id="formdangky" style="width: 450px;">
<tbody>
<tr>
    <td class="tenhang" width="118">Họ:</td>
    <td width="320"><input name="ho" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Tên:</td>
    <td><input name="ten" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Email:</td>
    <td><input name="email" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Số Điện Thoại:</td>
    <td><input maxlength="11/" name="dienThoai" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Số Lượng Mua:</td>
    <td><input name="soLuong" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Ngày Nhận Hàng:</td>
    <td><input id="datepicker" name="ngaymua" type="text" /></td>
  </tr>
<tr>
    <td class="tenhang">Thanh Toán:</td>
    <td><input id="ck" name="thanhToan" type="radio" value="chuyenKhoan" /> Chuyển Khoản
        <input id="tt" name="thanhToan" type="radio" value="trucTiep" /> Trực Tiếp Khi Giao Hàng
    </td>
  </tr>
<tr>
    <td><input name="Submit" type="submit" value="Đăng Ký Mua" /></td>
    <td><input name="Reset" type="reset" value="Xóa" /></td>
  </tr>
</tbody></table>
</form>
Bây giờ tôi sẽ giải thích code.

Thẻ mở Form:

<form name="myForm" action="#" onsubmit="return validateForm()" method="post">

2 cái action="#" và method="post" được dùng cho việc gửi dữ liệu lên máy chủ server nên hiện bạn không cần phải quan tâm, chúng ta chỉ cần để ý đến tên của Form ở thuộc tính name="myForm" và nơi xử lý dữ liệu qua onsubmit="return validateForm()"

validateForm() chính là tên hàm mà trong đó ta xây dựng code Javascript để bắt lỗi. Ta để onsubmit có nghĩa là, khi người dùng nhấn nút submit thì dữ liệu được chuyển đến hàm validateForm()

Thẻ input

Một thẻ input mẫu trong bài trên có dạng như này: <input name="ten" type="text" />

Tôi sử dụng type là text, 6 trường đầu tiên tôi sử dụng type này, trường Thanh toán là type radio, nút Đăng Ký Mua là type submit, nút Xóa là type reset.

Điều quan trọng trong thẻ input chính là name của nó. Chính thông qua name của Form và của Input mà Javascript lấy được dữ liệu nhập vào.

Lấy dữ liệu từ input

Đoạn code mẫu để lấy dữ liệu từ thẻ input: var ten = document.forms["myForm"]["ten"].value;

Như đoạn code trên có nghĩa là bạn lấy giá trị của thẻ input có tên là "ten" trong Form có tên là "myForm" và gán giá trị lấy được này vào biến var ten

Tương tự cho email: var email=document.forms["myForm"]["email"].value;

Không được bỏ trống dữ liệu

var ten = document.forms["myForm"]["ten"].value;
if (ten == "") {
alert("Tên không được để trống");
return false;

}

Theo đó, sau khi lấy được dữ liệu từ thẻ input và gán vào biên ten, chương trình dùng hàm if để kiểm tra ten có rỗng hay không - if(ten==""). Nếu thỏa mãn điều kiện rỗng sẽ có hộp thông báo "Tên không được để trống" và ta dùng hàm alert để điều khiển tác vụ này, cuối cùng return false.

Kiểm tra dữ liệu nhập vào có phải là số không

var dienThoai = document.forms["myForm"]["dienThoai"].value;
var kiemTraDT = isNaN(dienThoai);
if (kiemTraDT == true) {
alert("Điện thoại phải để ở định dạng số");
return false;
}


Hàm dùng để kiểm tra số đó là isNaN - viết tắt của is Not a Number. Nếu isNaN trả về giá trị TRUE nghĩa là đó không phải là một số.

Kiểm tra Email hợp chuẩn

Có lẽ với đa số mọi người thì đây là code phức tạp nhất (với mình cũng thế). Địa chỉ email chính xác phải thỏa mãn điều kiện sau:
  • Phải có ký tự @
  • Trước @ phải có ít nhất 1 ký tự
  • Phải có ít nhất 1 dấu chấm trong email
  • Phải có ít nhất 1 ký tự đứng giữa @ và dấu chấm
  • Dấu chấm không được đứng ở vị trí cuối cùng
var email=document.forms["myForm"]["email"].value;
var aCong=email.indexOf("@");
var dauCham = email.lastIndexOf(".");

if (email == "") {
alert("Email không được để trống");
return false;
}

else if ((aCong<1) || (dauCham<aCong+2) || (dauCham+2>email.length)) {
alert("Email bạn điền không chính xác");
return false;
}

Chúng ta cần chú ý đến lệnh indexOf, nó sẽ xác định số ký tự đứng trước nó tính từ trái sang. Ví dụ, email ab@xy.com có giá trị email.indexOf("@") là 2 vì có 2 ký tự là a và b đứng trước @

email.indexOf(".") có giá trị là 5 vì có 5 ký tự đứng trước dấu . là a, b, @, x, y

Nếu không có ký tự cần tìm trong chuỗi, hàm indexOf sẽ trả về -1.

Đến đây bạn tự hỏi email.lastIndexOf(".") có ý nghĩa gì. Hết sức chú ý chữ last. Lệnh này cũng là xác định số ký tự đứng trước dấu chấm nhưng là dấu chấm cuối cùng. Chẳng hạn email xyz.com@gmail.com, thế thì dấu chấm cuối cùng là dấu chấm sau chữ gmail chứ không phải sau chữ xyz. Giờ chúng ta cùng tìm hiểu ý nghĩa code.

var aCong=email.indexOf("@");
if (aCong<1)

Chỉ có 2 trường hợp xảy ra khi aCong<1:
  • Không có @ trong địa chỉ email, lúc này email.indexOf("@") = -1
  • aCong = 0, nghĩa là không có ký tự nào đứng trước @, hay email nhập vào có dạng @klm.com - tức là không hợp chuẩn
  • Vậy là với câu lệnh trên ta đã ép dữ liệu phải có @, và trước @ phải có ký tự
Sau @ phải có ít nhất 1 ký tự sau đó mới đến dấu chấm do đó, email hợp chuẩn thì số ký tự đứng trước dấu chấm luôn lớn hơn số ký tự đứng trước @ ít nhất 2 đơn vị - tức là dauCham >= aCong + 2, ngược lại điều này thì email đó không hợp lệ, nói cách khác là: dauCham < aCong + 2

Lệnh trên chúng ta đã ép phải tồn tại dấu chấm trong email, ngoài ra nó cũng buộc giữa dấu chấm cuối cùng và email phải có ít nhất 1 ký tự.

Tiếp đến ta xem xét câu lệnh ngăn không cho dấu chấm là ký tự cuối cùng trong email.

var dauCham = email.lastIndexOf(".");
dauCham+2>email.length
  • email.length xác định số ký tự của email
  • Sau dấu chấm cuối cùng phải có ít nhất 1 ký tự do vậy nếu dauCham + 2 > email.length nghĩa là email đó không hợp chuẩn.

Friday, October 18, 2013

Cách dùng thẻ input để làm Form trong HTML5

Email:

Làm Form trong HTML5 đơn giản hơn nhiều HTML thường, lý do nằm ở chỗ bạn không cần dùng Javascript để Validate (bắt lỗi dữ liệu) các trường nữa. Tất nhiên điều này không tuyệt đối, một số cái vẫn phải dùng Javascript, nhưng gì thì gì, chơi với HTML5, code mà bạn phải gõ sẽ ít hơn nhiều lần. Hiện trình duyệt Google Chrome hỗ trợ tốt nhất các thẻ input mới, do vậy tôi khuyên bạn nên dùng anh bạn này để xem các ví dụ trong bài viết.

Tôi sẽ bắt đầu luôn với thẻ input mà bạn thường xuyên phải bắt lỗi, đó là email. Nếu HTML thường bạn sẽ phải viết code JS khá dài thì với HTML5, bạn chỉ cần ghi: <input type="email">. Giờ bạn thử gõ một đoạn không phải email chuẩn rồi nhấn Gửi xem điều gì xẩy ra. Thẻ email được hỗ trợ tốt trên đa số trình duyệt, ngoại trừ Safari.

Email:
Đoạn code mẫu cho form trên là:

<form action="#">
Email: <input name="email" type="email" />
 <input type="submit" />
</form>

Bạn cũng còn nhớ, một yêu cầu khác mà chúng ta thường phải làm với Form, đó là không cho phép người dùng bỏ trống dữ liệu. Code JS cho điều này rất đơn giản, nhưng HTML5 còn đơn giản hơn! Bạn chỉ cần thêm thuộc tính required vào, cụ thể: <input type="email" required>

Email:
Bạn để trống và nhấn nút Gửi (submit) xem sao.

Như vậy, HTML5 không chỉ thêm các thẻ mới, nó còn thêm các thuộc tính mới nữa mà required ở trên là ví dụ.

Thuộc tính mới tiếp theo cũng rất hay dùng đó là placeholder, đây là đoạn văn bản trong thẻ input để nhắc người dùng nên nhập cái gì, ví dụ dòng chữ nhạt màu "Bạn nhập họ tên vào đây" được tạo bằng placeholder:

Họ tên:
Code mẫu:

<form action="#">
Họ tên: <input name="name" placeholder="Bạn nhập họ tên vào đây" required="" type="text" />
<input type="submit" />
</form>

Sau đây là các kiểu input mới khác trong HTML5...

Thẻ color - chọn màu

Chọn màu cho bạn:
Code mẫu:

<form action="#">
  Chọn màu cho bạn: <input type="color" name="mausac"><br>
  <input type="submit">
</form>

Hiện chỉ có Chrome và Opera hỗ trợ thẻ màu.

Thẻ number - số má

Nhập giá trị từ 1 đến 10:
Code mẫu:

<form action="#">
  Nhập giá trị từ 1 đến 10: <input type="number" name="quantity" min="1" max="10">
  <input type="submit">
</form>

Với thẻ number bạn buộc phải nhập số, thẻ number bổ sung thêm các thuộc tính giá trị nhỏ nhất min, giá trị lớn nhất max. Ngoài ra còn cả thuộc tính step - bước nhảy. Hiện thẻ number chưa được hỗ trợ trên FireFox.

Thẻ day - ngày tháng năm

Ngày sinh:
Code mẫu:

<form action="#">
  Ngày sinh: <input type="date" name="ngaysinh">
  <input type="submit">
</form>

Thẻ day sẽ giúp bạn nhanh chóng lấy ngày tháng năm cụ thể và dĩ nhiên bạn cũng không cần code để validate nữa, vì với thẻ này người dùng chỉ có thể nhập ngày tháng năm vào mà thôi.

Thẻ URL - thêm địa chỉ website

Địa chỉ web:
Code mẫu:

<form action="#">
  Địa chỉ web: <input type="url" name="page"><br>
  <input type="submit">
</form>

Thẻ này đa số các trình duyệt hỗ trợ, chỉ Safari là chưa. Yêu cầu nhập địa chỉ trang web phải có cả http://