自定义checkbox多选,且限制选中个数

需求描述:

最近在做项目是遇到自定义多选,而且还要对选中个数做限制,如下图

360截图162807228299114.png
页面元素
 <div class="multi-list hasTip bb pb-10">
               <div class="tit c6">业务属性:</div>
               <div class="mulit-item" id="business">
                  <label class="checkBtn checkBtn-default mr-10" >
                      <input class="checkbox" type="checkbox" value="信用贷款">信用贷款
                  </label>
                  <label class="checkBtn checkBtn-default mr-10">
                      <input class="checkbox" type="checkbox" value="抵押贷款">抵押贷款
                  </label> 
                  <label class="checkBtn checkBtn-default mr-10">
                      <input class="checkbox" type="checkbox" value="民间借贷">民间借贷
                  </label>
                  ..................
            </div>

点击事件

$(".multi-list").on("click",".checkbox",function(){
      var insLength = $("#institution .selected").length;
      var busLength = $("#business .selected").length;
      var isParent = $(this).parent().parent().attr("id");

      if(!$(this).parent().hasClass('selected')){
        if(insLength >= 2 && isParent == "institution"){
           warning_alert("机构属性最多能选2项");
           $(this).prop("checked", false);//当超过限制时,将checkbox设置为不可选中
           return;
        }else if(busLength >=3 && isParent == "business"){
           warning_alert("业务属性最多能选3项");
           $(this).prop("checked", false);
           return;
        }else{
          $(this).parent().addClass("selected");
        }
      }else{
        $(this).parent().removeClass("selected");
      }
    })

注意:用 $(this).prop("checked", false);来设置checkbox不可选中

1.为什么不用disabled?

因为设置成disabled,绑定其身上的点击事件也失效了,就没办法弹出提示信息了

2.为什么不用$(this).attr("checked", false);

jQuery版本问题。我操作属性用的是 $(“**”).attr(“attrName”);而jquery的版本用的是1.9,这就是存在一个兼容性和稳定性问题。 jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断,即

$("input[type='checkbox']").prop("checked"); 
$("input[type='checkbox']").prop("disabled", false); 
$("input[type='checkbox']").prop("checked", true);
额外补充
  1. 判断checkbox是否选中
//选中
$("input[type='checkbox']").is(":checked");
$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").get(0).checked;

//未选中
$("input[type='checkbox']").not(":checked");

2.给checkbox添加选中、取消、禁用事件

//选中
$("input[type='checkbox']").prop("checked", true);
//取消
$("input[type='checkbox']").prop("checked", false); 
//禁用
$("input[type='checkbox']").prop("disabled", "disabled"); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 入门 基本功能:访问和操作 dom 元素,控制页面样式,对页面的事件处理,与ajax完美结合,有丰富的插件...
    X_Arts阅读 1,072评论 0 2
  • JQ对象和原生对象可以相互转化 原生转JQ $('需要转化的元素')JQ转原生 $('需要转化的元素')[0] 注...
    小飞侠zzr阅读 655评论 0 0
  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,526评论 0 44
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,422评论 0 2
  • 昨晚看了被刷爆朋友圈的《战狼II》,当我看到华资工厂的工人手无寸铁被人屠杀,冷锋被大铁片压着用手机拍下了视频传到了...
    杜果果阅读 530评论 0 5