HTML 5 มี attribute อย่าง required ช่วยตรวจสอบฟอร์ม แต่มันยังไม่สมบูรณ์ เช่น ใช้ required กับกลุ่ม checkbox ไม่ได้ มันตรวจได้แค่เลือก checkbox ตัวนั้นๆเท่านั้น จะบังคับให้เลือก 1 ในตัวเลือกไม่ได้
ทำให้ต้องใช้เจคิวรี่อย่าง jQuery Validation Plugin ช่วย
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>jQuery Validation : html5 / inline</title> <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet" type="text/css"> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="http://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="http://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <form action="validation.php" enctype="multipart/form-data" id="formA" method="post"> <div class="form-group"> <p>เครื่องปรุง</p> <!-- ใส่ required ใน input ตัวแรกก็พอ --> <label> <input type="checkbox" name="flavoring[]" value="1" required> เกลือ</label> <label> <input type="checkbox" name="flavoring[]" value="2"> น้ำตาล</label> <label> <input type="checkbox" name="flavoring[]" value="3"> น้ำปลา</label> <label> <input type="checkbox" name="flavoring[]" value="4"> พริกป่น</label> <!-- แสดง error ตรงนี้ อย่าลืม class="error" --> <label for="flavoring[]" class="error"></label> </div> <div class="form-inline"> <div class="form-group"><!-- input text ธรรมดา --> <label>สั่งวันที่ <input type="text" name="dateOrder" required data-rule-date="true"> </label> </div> <div class="form-group"><!-- input date --> <label>ส่งวันที่ <input type="date" name="dateDelivery" required> </label> </div> </div> <div class="form-inline"> <div class="form-group"><!-- min and max length --> <label> <input type="text" id="sendto" name="sendto" required minlength="10" maxlength="50" data-rule-email="true"> Email</label> </div> <div class="form-group"> <!-- data-rule-equalTo id sendto --> <label> <input type="email" id="sendtoSame" name="sendtoSame" required data-rule-equalTo="#sendto"> Email Confirm</label> </div> </div> <div class="form-inline"> <div class="form-group"> <label>รับเฉพาะภาพ <input type="file" name="image" accept="image/*"> </label> </div> <div class="form-group"><!-- style input --> <label class="btn btn-primary">รับแต่ .jpeg <input type="file" name="jpeg" accept="image/jpeg" style="display:none;"> </label> </div> </div> <div class="form-inline"> <div class="form-group"> <label>ข้าวเปล่า <input type="text" name="rice" data-rule-number="true"> </label> </div> <div class="form-group"> <label>แคปหมู (ปลีก สั่งเป็นขีดได้ เช่น 0.5) <input type="number" name="friedPorkSkin" step="0.1"> </label> </div> <div class="form-group"><!-- custom message --> <label>แคปหมู (ส่ง kg.) <input type="number" name="friedPorkSkin" data-rule-digits="true" data-message-digits="ขายแต่เป็น KG ครับ"> </label> </div> </div> <div class="form-group"> <p>เส้น</p> <!-- ใส่ required ใน input ตัวแรกก็พอ --> <label> <input type="radio" name="noodle" value="1" required> เส้นหมี่</label> <label> <input type="radio" name="noodle" value="2"> เส้นเล็ก</label> <label> <input type="radio" name="noodle" value="3"> เส้นใหญ่</label> <label> <input type="radio" name="noodle" value="4"> เส้นหมี่</label> <!-- แสดง error ตรงนี้ อย่าลืม class="error" --> <label for="noodle" class="error"></label> </div> <div class="form-group"> <label>ลวกนานมั๋ย <input type="range" min="2" max="8" step="1"> </label> </div> <div class="form-inline"> <div class="form-group"> <label>เว็บบริษัท <input type="text" name="officeUrl" data-rule-url="true"> </label> </div> <div class="form-group"> <label>เว็บส่วนตัว <input type="url" name="blogUrl"> </label> </div> </div> <input type="submit" value="Submit"> </form> <script src="assets/jQuery/jquery.min.js"></script> <script src="plus/jQuery/jquery-validation/jquery.validate.min.js"></script> <script> $(function() { $('#formA').validate(); }); </script> </body> </html>
About the author