ป้ายกำกับ: checkbox

ทำ checkbox / radio สวย ๆทำ checkbox / radio สวย ๆ

สิ่งที่ css framework อย่าง bootstrapt ไม่ยอมทำซักทีคือ ทำให้ checkbox หรือ radio ออกมาเหมือน ๆ กันทุก browser ทำให้การออกแบบฟอร์มทำได้ไม่สวยงามเท่าที่ควร

แก้ได้โดยใช้ fronteed/icheck มาวางภาพทับ checkbox หรือ radio ไว้ และทำการจับ event แทนตัว input จริง ๆ

ตัวอย่าง
jQuery.iCheck.php

<!doctype html>
<html>
 <head>
 <meta charset="utf-8">
 <title>jQuery iCheck</title>
 <link href="vendor/twbs/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css">
 <link href="vendor/fronteed/icheck/skins/square/green.css" rel="stylesheet" type="text/css">
 </head>
 <body>
 <?php
 if (count ($_POST)) {
 echo '<pre>', print_r ($_POST, true) , '</pre>';
 }
 ?>
 <div class="container">
 <form action="jQuery.icheck.php" id="formA" method="post">
 <fieldset class="form-group row">
 <legend class="col-form-legend col-sm-2">Checkbox</legend>
 <div class="col-sm-10">
 <div class="form-check">
 <label class="form-check-label">
 <input class="form-check-input" checked id="chk1" name="checkbox1" type="checkbox" value="checkbox1">
 Check me out </label>
 </div>
 <div class="form-check">
 <label class="form-check-label">
 <input class="form-check-input" id="chk2" name="checkbox2" type="checkbox" value="checkbox2">
 Check me </label>
 </div>
 <div class="form-check">
 <label class="form-check-label">
 <input class="form-check-input" id="chk3" name="checkbox3" type="checkbox" value="checkbox3" disabled>
 Check is disabled </label>
 </div>
 </div>
 </fieldset>
 <fieldset class="form-group row">
 <legend class="col-form-legend col-sm-2">Radios</legend>
 <div class="col-sm-10">
 <div class="form-check">
 <label class="form-check-label">
 <input class="form-check-input" checked id="gridRadios1" name="radio" type="radio" value="option1">
 Check me out </label>
 </div>
 <div class="form-check">
 <label class="form-check-label">
 <input class="form-check-input" id="gridRadios2" name="radio" type="radio" value="option2">
 Check me </label>
 </div>
 <div class="form-check disabled">
 <label class="form-check-label">
 <input class="form-check-input" disabled id="gridRadios3" name="radio" type="radio" value="option3">
 Check is disabled </label>
 </div>
 </div>
 </fieldset>
 <div class="form-group row">
 <label class="col-sm-2"></label>
 <div class="col-sm-10 text-right">
 <button class="btn btn-lg btn-primary" type="submit">Save</button>
 </div>
 </div>
 </form>
 <hr>
 <button class="btn btn-lg btn-info" id="ajaxBtn" type="button">AJAX Value</button>
 </div>
 <script src="vendor/components/jquery/jquery.min.js"></script>
 <script src="vendor/fronteed/icheck/icheck.min.js"></script>
 <script>
 $ (function () {
 
 /* style */
 $ ('input') .iCheck ({
 	"checkboxClass": "icheckbox_square-green",
 	"radioClass": "iradio_square-green",
 }) ;
 
 /* event */
 $ ('input') .on ('ifChanged', function (event) {
 console.log (event) ;
 
 alert ('checked = ' + event.target.checked) ;
 alert ('id = ' + event.target.id) ;
 alert ('name = ' + event.target.name) ;
 alert ('type = ' + event.target.type) ;
 alert ('value = ' + event.target.value) ;
 }) ;
 
 /* value */
 $ ('#ajaxBtn') .click (function () {
 	var formData = $ ('#formA') .serializeArray () ;
 	var message = '';
 
 	$.each (formData, function (index, item) {
 	 message +='\n' + index + ' ' + item.name + ' = '+item.value;
 	}) ;
 
 	alert (message) ;
 
 }) ;
 
 }) ;
 </script>
 </body>
</html>

สามารถเปลี่ยนรูปแบบอื่นได้โดยดู style ได้จาก iCheck v1.0.1 @FRONTEED จากนั้นเปลี่ยน css ไฟล์ และ checkboxClass หรือ radioClass ไม่ก็ทำภาพพื้นหลังใหม่และเขียน css ของตัวเองก็ได้