ตัวอย่างนี้เป็นแนวทางเท่านั้น การประยุกต์ใช้งานเพิ่มเติม จำเป็น
ต้องอาศัยความเข้าใจอื่นๆ ประกอบ
รูปแบบหน้าตา คือ จะมีตาราง ของชุดข้อมูล
โดยมีแถว รายการสลับสีพื้นหลังด้วย css คลาส ชื่อ row_css1 และ row_css2
และเมื่อมีการเลือกแถวรายการใดๆ ก็จะทำการ เปลี่ยนสีของแถวที่ถูกเลือก ด้วย
css คลาส ชื่อ hiligh_select_row
วิธีการทดสอบ ติ๊กเลือกรายการที่ 2 เป็นรายการแรก แล้ว กด shift ที่ คีบอร์ตค้างไว้
พร้อมกับ ติ้กเลือกรายการที่ 5 แบบนี้เป็นต้น
ตัวอย่าง
โค้ดทดสอบทั้งหมด คำอธิบาย แสดงในโค้ด
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> </title> <style type="text/css"> .row_css1{ background-color:#f4f2f5; } .row_css2{ background-color:#f2e8f5; } .row_css1:hover, .row_css2:hover{ background-color:#EAEAEA; } .hiligh_select_row{ background-color: #9DFFBD; } .hiligh_select_row:hover{ background-color: #9DFFBD; } </style> </head> <body> <div style="margin:auto;width:80%;"> <br /> <form id="form_test_shift_checkbox" name="form_test_shift_checkbox" method="post" action=""> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr> <td width="30" height="25" align="center" bgcolor="#D6D6D6"><input name="check_all_item" type="checkbox" id="check_all_item" value="1" /></td> <td width="30" height="25" align="center" bgcolor="#D6D6D6">#</td> <td height="25" bgcolor="#D6D6D6"> Topic</td> </tr> <?php for($i=1;$i<=10;$i++){ ?> <tr id="IDrow<?=$i?>" class="<?=($i%2==0)?"row_css1":"row_css2"?>"> <td width="30" height="25" align="center"> <input name="my_checkbox[]" type="checkbox" id="my_checkbox[]" class="css_my_checkbox" onclick="toggle_class('<?=$i?>');" value="<?=$i?>" /> </td> <td width="30" height="25" align="center"><?=$i?></td> <td height="25"> Data <?=$i?></td> </tr> <?php }?> </table> </form> <br /> <br /> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(function(){ // เมื่อ checkbox คลาส css_my_checkbox ถูกติ๊ก $(".css_my_checkbox").click(function(e){ // ตรวจสอบถ้าปุ่ม shift ถูกกดอยู่ if(e.shiftKey){ // เก็บค่า ลำดับของ checkbox ที่ถูกติ๊กเลือก var nowID_chk=$(".css_my_checkbox").index(this); // กำหนดตัวแปร เก็บค่าลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก var first_index_check=null; // วนลูปหา ค่า ลำดับ chexbox ก่อนหน้าที่ถูกติ๊กเลือก $(".css_my_checkbox:lt("+nowID_chk+")").each(function(i,k){ // เริ่มเก็บค่า ลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก เฉพาะรายการที่ถูกติ้กเท่านั้น if($(".css_my_checkbox:eq("+i+")").prop("checked")==true){ // เก็บค่าไว้ในตัวแปร first_index_check=i; } }); // ถ้ามีค่า ลำดับ checkbox ก่อนหน้าที่ถูกเลือก และไม่อยู่ติดกัน if(first_index_check!=null && nowID_chk-first_index_check>1){ // กำหนดตัวแปร เก็บค่า ลำดับต่อจาก ลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก var nextToCheck=first_index_check+1; // วนลูปทำงานเลือกเฉพาะ checkbox ที่ยังไม่ถูกเลือก for(i=nextToCheck;i<nowID_chk;i++){ // เก็บค่าสำหรับ อ้างอิงลำดับแถวของตาราง var rowID=$(".css_my_checkbox:eq("+i+")").val(); // เปลี่ยนสีพื้นหลัง เป็นรายการที่ถูกเลือก toggle_class(rowID); // กำหนด checkbox ตามเงื่อนไข ให้ถูกติ้กเลือกทั้งหมด $(".css_my_checkbox:eq("+i+")").prop("checked",true); } } } }); $("#check_all_item").click(function(){ var i_check=$(this).prop("checked"); if(i_check==true){ $(".row_css1,.row_css2").addClass("hiligh_select_row"); $(".css_my_checkbox").prop("checked",true); }else{ $(".row_css1,.row_css2").removeClass("hiligh_select_row"); $(".css_my_checkbox").prop("checked",false); } }); }); </script> <script type="text/javascript"> function toggle_class(rowID){ var placeRow="IDrow"+rowID; $("#"+placeRow).toggleClass("hiligh_select_row"); } </script> </body> </html>
ตัาอย่างการใช้งาน กรณีประยุกต์อ้างอิงกับข้อมูลในฐานข้อมูล
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> </title> <style type="text/css"> .row_css1{ background-color:#f4f2f5; } .row_css2{ background-color:#f2e8f5; } .row_css1:hover, .row_css2:hover{ background-color:#EAEAEA; } .hiligh_select_row{ background-color: #9DFFBD; } .hiligh_select_row:hover{ background-color: #9DFFBD; } </style> </head> <body> <div style="margin:auto;width:80%;"> <br /> <form id="form_test_shift_checkbox" name="form_test_shift_checkbox" method="post" action=""> <table width="100%" border="0" cellspacing="3" cellpadding="0"> <tr> <td width="30" height="25" align="center" bgcolor="#D6D6D6"><input name="check_all_item" type="checkbox" id="check_all_item" value="1" /></td> <td width="30" height="25" align="center" bgcolor="#D6D6D6">#</td> <td height="25" bgcolor="#D6D6D6"> Topic</td> </tr> <?php // row_id คือ primary key ของชุดมูลที่เราจะใช้อ้างอิง $i=1; $q="SELECT * FROM table_a ORDER BY row_id LIMIT 10 "; $qr-mysql_query($q); while($rs=mysql_fetch_array($qr)){ ?> <tr id="IDrow<?=$rs['row_id']?>" class="<?=($i%2==0)?"row_css1":"row_css2"?>"> <td width="30" height="25" align="center"> <input name="my_checkbox[]" type="checkbox" id="my_checkbox[]" class="css_my_checkbox" onclick="toggle_class('<?=$rs['row_id']?>');" value="<?=$rs['row_id']?>" /> </td> <td width="30" height="25" align="center"><?=$i?></td> <td height="25"> Data <?=$rs['row_id']?></td> </tr> <?php $i++; }?> </table> </form> <br /> <br /> </div> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(function(){ // เมื่อ checkbox คลาส css_my_checkbox ถูกติ๊ก $(".css_my_checkbox").click(function(e){ // ตรวจสอบถ้าปุ่ม shift ถูกกดอยู่ if(e.shiftKey){ // เก็บค่า ลำดับของ checkbox ที่ถูกติ๊กเลือก var nowID_chk=$(".css_my_checkbox").index(this); // กำหนดตัวแปร เก็บค่าลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก var first_index_check=null; // วนลูปหา ค่า ลำดับ chexbox ก่อนหน้าที่ถูกติ๊กเลือก $(".css_my_checkbox:lt("+nowID_chk+")").each(function(i,k){ // เริ่มเก็บค่า ลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก เฉพาะรายการที่ถูกติ้กเท่านั้น if($(".css_my_checkbox:eq("+i+")").prop("checked")==true){ // เก็บค่าไว้ในตัวแปร first_index_check=i; } }); // ถ้ามีค่า ลำดับ checkbox ก่อนหน้าที่ถูกเลือก และไม่อยู่ติดกัน if(first_index_check!=null && nowID_chk-first_index_check>1){ // กำหนดตัวแปร เก็บค่า ลำดับต่อจาก ลำดับ checkbox ก่อนหน้าที่ถูกติ๊กเลือก var nextToCheck=first_index_check+1; // วนลูปทำงานเลือกเฉพาะ checkbox ที่ยังไม่ถูกเลือก for(i=nextToCheck;i<nowID_chk;i++){ // เก็บค่าสำหรับ อ้างอิงลำดับแถวของตาราง var rowID=$(".css_my_checkbox:eq("+i+")").val(); // เปลี่ยนสีพื้นหลัง เป็นรายการที่ถูกเลือก toggle_class(rowID); // กำหนด checkbox ตามเงื่อนไข ให้ถูกติ้กเลือกทั้งหมด $(".css_my_checkbox:eq("+i+")").prop("checked",true); } } } }); $("#check_all_item").click(function(){ var i_check=$(this).prop("checked"); if(i_check==true){ $(".row_css1,.row_css2").addClass("hiligh_select_row"); $(".css_my_checkbox").prop("checked",true); }else{ $(".row_css1,.row_css2").removeClass("hiligh_select_row"); $(".css_my_checkbox").prop("checked",false); } }); }); </script> <script type="text/javascript"> function toggle_class(rowID){ var placeRow="IDrow"+rowID; $("#"+placeRow).toggleClass("hiligh_select_row"); } </script> </body> </html>