【问题标题】:Show/Hide DIV by Multiple Checkboxes通过多个复选框显示/隐藏 DIV
【发布时间】:2013-09-01 08:00:05
【问题描述】:

我正在尝试在 div 中显示/隐藏表单,以多个复选框为条件。如果所有 3 个都被选中,则应该出现 div 内容。如果一个或多个未选中,则应该隐藏 div 内容。

<!DOCTYPE html>
<html lang="en">
    <head>
        <link href="style/bootstrap.css" rel="stylesheet">
        <script src="js/jquery.js"></script>
        <script>
            if ($('#checkbox1, #checkbox2, #checkbox3').is(:checked)) {
               $('#purchaseForm').show();
            } else {
               $('#purchaseForm').hide();
            }
        </script>
    </head>
    <body>
        <div class="span6">
            I understand that...<br>
            I understand that...<br>
            I understand that...<br><br>

        <div id="purchaseForm">
            [form]
        </div>          
        </div>

        <div class="span6">
            <input name="checkbox1" id="checkbox1" value="" type="checkbox"><br>
            <input name="checkbox2" id="checkbox2" value="" type="checkbox"><br>
            <input name="checkbox3" id="checkbox3" value="" type="checkbox"><br>
        </div>
    </body>
</html>

【问题讨论】:

  • is(:checked) 你的代码是这样的吗?那应该是is(':checked')

标签: javascript jquery html show-hide


【解决方案1】:

Try

$(document).ready(function() {
var a = $("#checkbox1");
var b = $("#checkbox2");
var c = $("#checkbox3");
var combined = a.add(b).add(c);
$(combined).click(function() //anyone of combined cliecked event
{
    // if ($('#checkbox1, #checkbox2, #checkbox3').is(':checked'))    this means         one of those is checked
    if ($(a).is(':checked') && $(b).is(':checked') && $(c).is(':checked')) {
        $('#purchaseForm').show();
    } else {
        $('#purchaseForm').hide();
    }
});

});

【讨论】:

    【解决方案2】:

    可以监听复选框的变化事件DEMO Here

    $(function(){
    var container = $('#container');
    var purchaseForm = $('#purchaseForm');
        container.on('change', 'input[type="checkbox"]', function(){
            if(container.find('input[type="checkbox"]').not(':checked').length){
            purchaseForm.hide();
            }
            else{
            purchaseForm.show();
            }
        });
        container.find('input[type="checkbox"]:first').change();
    });
    

    【讨论】:

    • 更新为容器使用 ID
    【解决方案3】:

    DEMO

    $(function(){  
      var $cbx  = $(':checkbox[id^=check]'),
          $form = $('#purchaseForm');  
      $cbx.change(function(){
        $form[$cbx.not(':checked')[0]?'hide':'show']();
      }).change();
    });
    

    【讨论】:

      【解决方案4】:

      您当前正在检查是否选中了任何复选框。确保它们都被选中。

      if ($('#checkbox1').is(':checked') && $('#checkbox2').is(':checked') && $('#checkbox3').is(':checked'))
      

      【讨论】:

        【解决方案5】:

        试试

        jQuery(function(){
            var checks = $('#checkbox1, #checkbox2, #checkbox3');
        
            checks.click(function(){
                if (checks.filter(':checked').length == checks.length) {
                    $('#purchaseForm').show();
                } else {
                    $('#purchaseForm').hide();
                }
            }).triggerHandler('click')
        
        
        })
        

        演示:Fiddle

        【讨论】:

          猜你喜欢
          • 2016-01-20
          • 2015-10-10
          • 1970-01-01
          • 1970-01-01
          • 2014-10-30
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          • 1970-01-01
          相关资源
          最近更新 更多