如何防止用户从jquery的一组复选框输入中取消选中所有检查

时间:2015-08-28 23:23:02

标签: javascript jquery html twitter-bootstrap twitter-bootstrap-3

您好我使用一组复选框来过滤来自Feed的数据,基本上我将所有复选框设置为默认处于活动状态,如何阻止用户取消选中所有选项?我需要至少一个要检查。希望有人可以提供帮助。

我创建了jsfiddle

这是我的HTML:

<div class="pull-left" id="filter">
    <div class="btn-group" data-toggle="buttons">

        <label class="btn btn-primary active" id="btnOne">
            <input type="checkbox" name="filter"> One Selected
        </label>

        <label class="btn btn-primary active" id="btnTwo">
            <input type="checkbox" name="filter"> Two Selected
        </label>

        <label class="btn btn-primary active" id="btnThree">
            <input type="checkbox" name="filter"> Three Selected
        </label>

        <label class="btn btn-primary active" id="btnFour">
            <input type="checkbox" name="filter"> Four Selected
        </label>

    </div>
</div>

2 个答案:

答案 0 :(得分:2)

将此代码添加到javascript,Queue TTL

$(function() {
  $(".btn.active").click(function(){
      if($(this).hasClass('active')){
          if($(".btn.active").length===1){
              return false;     
          }
    }
  });
});

请注意,您没有更改复选框checked属性,您正在使用带有active类切换触发器行为的按钮。

答案 1 :(得分:0)

最好的选择是使用library(shiny) library(shinydashboard) jsfile <- "https://gist.githack.com/daattali/7519b627cb9a3c5cebcb/raw/91e8c041d8fe4010c01fe974c6a35d6dd465f92f/jstest.js" runApp(shinyApp( ui = dashboardPage( header = dashboardHeader(), sidebar = dashboardSidebar(), body = dashboardBody( tags$head(tags$script(src = jsfile)) ) ), server = function(input, output) { } )) 代替radio buttons

我发现更改事件更可靠,我会阻止用户取消选中所有复选框,如下所示:

checkboxes

$(':checkbox[name=filter]').on('change', function() {
    $(':checkbox[name=filter]:checked').length == 0 
    && !this.checked 
    && $(this).prop('checked', true);
});
$(function() {
    $(':checkbox[name=filter]').on('change', function() {
        $(':checkbox[name=filter]:checked').length == 0 && !this.checked && $(this).prop('checked', true);
    });
});