如果选中一个复选框,则结束功能

时间:2013-08-25 23:51:48

标签: javascript jquery function if-statement return

当检查了三个复选框(#PCOF,#PICTMI或#PCRM)中的任何一个时,我有一个id为“PCsetup”的div设置为滑动打开,但是如果已经检查了三个中的一个或两个,并且用户检查另一个复选框,我想在滑动打开之前结束该功能,因为它实际上会关闭“PCsetup”div。如何检查其他两个复选框是否有功能检查,如果不是,请将div滑下?这是我到目前为止所做的:

$(function() {
$("input[type=checkbox]").on('click', function(){
    if ($("#PCOF").is(':checked'))|| ($("#PCRM").is(':checked')) {
       return;
    } else if $('#PCTMI').is(':checked')){
        $("#PCsetup").slideDown("slow");
    } else { 
        $("#PCsetup").slideUp("slow");
    }
});

2 个答案:

答案 0 :(得分:0)

以下几点:1。示例中的匿名函数未关闭,因此代码无效。 2.我很难完全按照你想要完成的工作,但是如果检查了任何复选框的组合,你就会想要显示div,如果没有选中则隐藏它。这将得到你的结果:

$(document).ready(function() {
  $(function() {
    $('#PCOF, #PCTMI, #PCRM').on('click', function() {
      var numChecked = $('#PCOF:checked, #PCTMI:checked, #PCRM:checked').length;

      if (!numChecked) {
        $('#PCsetup:visible').slideUp('slow');
      } else {
        $('#PCsetup').slideDown('slow');
      }   
    });
  });
});

http://jsbin.com/IsutuhI/3

答案 1 :(得分:0)

类似

$(function() {
    var $chks = $('#PCOF, #PCRM, #PCTMI');
    $chks.on('click', function(){
        var checked = $chks.filter(':checked').length > 0, visible = $("#PCsetup").is(':visible');
        console.log('dd', checked, visible)

        if (checked && !visible) {
            $("#PCsetup").finish().slideDown("slow");
        } else if(!checked && visible){
            $("#PCsetup").finish().slideUp("slow");
        }
    });
});

演示:Fiddle