监测checkbox复选框选中个数,可指定数目
需求:提供6个坦克可供选择,只允许用户选择3个坦克
解决思路:监控checkbox复选框的选中个数,可取消选择,数额达到指定数量,禁止再选,选完也可取消
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>6选3</title> <script src="https://cdn.bootcss.com/jquery/3.5.0/jquery.js"></script> </head> <style> @charset "UTF-8"; blockquote, body, button, dd, dl, dt, fieldset, form, h1, h2, h3, h4, h5, h6, hr, input, legend, ol, p, pre, td, textarea, th, ul { margin: 0; padding: 0; } body { font: 14px "Microsoft Yahei", Arial, Helvetica, sans-serif; color: #fff; background: #030c20; } a { text-decoration: none; } ul, ul { list-style: none; } img { border: 0; } button, input, select, textarea { border: none; outline: none; } table { border-collapse: collapse; border-spacing: 0; } .fl { float: left } .clearfix { zoom: 1; } .clearfix:after { display: block; visibility: hidden; clear: both; height: 0; content: ""; } /* 坦克6选1 */ .section04 { padding: 1px; box-sizing: border-box; } .section04 h2 { text-align: center; margin: 50px auto 30px; } .tabbar ul li { float: left } .section04 .info h3 { font-size: 38px; color: #fcc689; margin-bottom: 26px; } .check_wrap { border: 1px solid #fcc689; width: 30px; height: 30px; position: absolute; margin: 10px 10px 0 0; top: 9px; left: 42px; z-index: 5; } .check_wrap label { width: 30px; height: 30px; position: absolute; top: 0; left: 0; cursor: pointer; } .check_wrap input { width: 30px; height: 30px; position: absolute; top: 0; left: 0; visibility: hidden; cursor: pointer; } .check_wrap input:checked+label { background: url(../http://awhd.kongzhong.com:80/tank_ld/resources/images/checked.png) center center no-repeat; } .info h4 { font-size: 22px; color: #fcc689; } .info h3 div { margin-left: 30px; } .info p { font-size: 18px; color: #a5a4a4; width: 68%; } .trans { transform: rotate(90deg); -ms-transform: rotate(90deg); /* Internet Explorer 用360兼容模式测试发现IE9及以下不好使*/ -moz-transform: rotate(90deg); /* Firefox */ -webkit-transform: rotate(90deg); /* Safari 和 Chrome */ -o-transform: rotate(90deg); /* Opera */ font-size: 38px; margin-top: 39px; margin-left: -38px; color: #fcc689; white-space: nowrap; } .section04 ul li:nth-child(2) .info_fold .trans { margin-top: 86px; margin-left: -82px; } .section04 ul li:nth-child(3) .info_fold .trans { margin-top: 25px; margin-left: -20px; } .section04 ul li:nth-child(4) .info_fold .trans { margin-top: 33px; margin-left: -21px; } .section04 ul li:nth-child(5) .info_fold .trans { margin-top: 42px; margin-left: -34px; } .section04 ul li:nth-child(6) .info_fold .trans { margin-top: 43px; margin-left: -35px; } .rel { position: relative; } .abs { position: absolute; top: 10px; left: 50px; } .tabbar { width: 1220px; margin: 0 auto; } .info_fold { top: 60px; left: 41px; } .unfold { display: none; } .unfold img { width: 652px; height: 657px; } .click { position: absolute; top: 52px; left: 0; height: 91%; width: 100%; } .parent { position: relative; } .tip_bottom { margin: 40px auto 0; text-align: center; } .tip_bottom .get-btn { display: inline-block; *display: inline; *zoom: 1; margin-bottom: 10px; width: 218px; line-height: 55px; color: #2f2412; font-size: 22px; font-weight: bold; text-align: center; background-image: url(../http://awhd.kongzhong.com:80/tank_ld/resources/images/btn2.png); } </style> <body> <div class="section section04"> <div class="main"> <h2><img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/title.png" alt></h2> <div class="tabbar"> <ul class="cl clearfix"> <li class="parent"> <div class="check_wrap" id="1"> <input type="checkbox" id="check6_fold" name="chose"> <label for="check6_fold"></label> </div> <div class="fold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img6_fold.png"> <div class="info_fold abs"> <div class="trans">M2A3</div> </div> <div class="click"></div> </div> <div class="unfold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img6_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">M2A3</div> </h3> <h4>M2A3介绍</h4> <p>M2A3布雷德利作为布雷德利装甲车家族的一员,它的诞生是为了对抗BMP系列,强大的部队运输能力、强大的火力和优异的机动性得到证明。</p> </div> </div> </div> </li> <li class="parent"> <div class="check_wrap" id="2"> <input type="checkbox" id="check3_fold" name="chose"> <label for="check3_fold"></label> </div> <div class="fold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img3_fold.png"> <div class="info_fold abs"> <div class="trans">阿尔-侯赛因</div> </div> <div class="click"></div> </div> <div class="unfold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img3_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">阿尔-侯赛因</div> </h3> <h4>阿尔-侯赛因介绍</h4> <p>这是一种升级型的挑战者1坦克,相比于原来的挑战者1坦克,该型坦克采用了诸多改进措施。</p> </div> </div> </div> </li> <li class="parent"> <div class="check_wrap" id="3"> <input type="checkbox" id="check5_fold" name="chose"> <label for="check5_fold"></label> </div> <div class="fold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img5_fold.png"> <div class="info_fold abs"> <div class="trans">章鱼</div> </div> <div class="click"></div> </div> <div class="unfold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img5_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">章鱼</div> </h3> <h4>章鱼介绍</h4> <p>2S25章鱼-SD自行反坦克歼击车是在1984年至2010年制造,设计时使用了934工程原型车作为平台。</p> </div> </div> </div> </li> <li class="parent"> <div class="check_wrap" id="4"> <input type="checkbox" id="check4_fold" name="chose"> <label for="check4_fold"></label> </div> <div class="fold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img4_fold.png"> <div class="info_fold abs"> <div class="trans">VT-4</div> </div> <div class="click"></div> </div> <div class="unfold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img4_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">VT-4</div> </h3> <h4>VT-4介绍</h4> <p>VT-4又称为MBT3000,首次在2012年于欧洲展览会上亮相,它是VT1型坦克的改进型号。</p> </div> </div> </div> </li> <li class="parent"> <div class="check_wrap" id="5"> <input type="checkbox" id="check2_fold" name="chose"> <label for="check2_fold"></label> </div> <div class="fold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img2_fold.png"> <div class="info_fold abs"> <div class="trans">德拉贡</div> </div> <div class="click"></div> </div> <div class="unfold rel"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img2_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">德拉贡</div> </h3> <h4>德拉贡介绍</h4> <p>BMP-3M 德拉贡 125是BMP系列最新的战车,配备125mm火炮。</p> </div> </div> </div> </li> <li class="parent"> <div class="check_wrap" id="6"> <input type="checkbox" id="check1_fold" name="chose"> <label for="check1_fold"></label> </div> <div class="fold rel" style=" display: none;"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img1_fold.png"> <div class="info_fold abs"> <div class="trans">M1A2</div> </div> <div class="click"></div> </div> <div class="unfold rel" style=" display: block;"> <img src="http://awhd.kongzhong.com:80/tank_ld/resources/images/img1_unfold.png"> <div class="abs"> <div class="info"> <h3 class="clearfix"> <div class="fl">M1A2</div> </h3> <h4>M1A2介绍</h4> <p>M1A2主战坦克以M1A1为基础实现了众多升级,包括改进火控、外形、计算机系统、装甲和升级传动装置。</p> </div> </div> </div> </li> </ul> </div> <div class="tip_bottom"> <a href="javascript:void(0)" class="get-btn">立刻领取</a> <p>新老用户选定3辆车型领取,自动发放相应车型到绑定的登录账户</p> </div> </div> </div> <script type="text/javascript"> // 坦克6选1 $(".tabbar ul li").each(function () { var fold = $(this).find(".fold"); var unfold = $(this).find(".unfold"); if (fold.is(":hidden")) { $(this).width(652); } else { $(this).width(109); } }) $(".tabbar ul li .click").click(function () { $(this).parent().parent().animate({ width: 652 }, 200); $(this).parent().parent().find(".unfold").show(); $(this).parent().parent().find(".fold").hide(); $(this).parent().parent().siblings().animate({ width: 109 }, 200); $(this).parent().parent().siblings().find(".unfold").hide(); $(this).parent().parent().siblings().find(".fold").show(); }) var num = 0; // 监控选中状态 $("input[type='checkbox']").change(function () { if ($(this).is(":checked")) { num++; } else if (!$(this).is(":checked")) { num--; } if ($(this).is(":checked") && num > 3) { // 已选三个时,将另外选中的值设置为false $(this).prop("checked", false); num = 3; } } ) var arrData; function getFunc() { var result = $("input[type='checkbox']:checked").length; if (result < 3) { alert("请选择三个坦克"); return false; } else { $("input[type='checkbox']").each(function () { if ($(this).is(":checked")) { arr.push($(this).parent().attr("id")); } }) console.log("最终选取结果" + arr.slice(-3)); arrData = arr.slice(-3); var data = { id1: arrData[0], id2: arrData[1], id3: arrData[2] } $.ajax({ type: "POST", dataType: "JSON", data: data, url: pageUrl + "/你定义的接口", success: function (data) { alert(data.msg); } }); } } </script> </body> </html>