2013-04-27 87 views
0

如何添加一個複選框,以檢查所有複選框是否已選中?用隱藏檢查所有複選框

如何將顯示/隱藏功能添加到「全選」複選框。 如果勾選全部複選框,則還需要顯示提交按鈕。選擇所有chckbox的

$(document).ready(function() { 

var $submit = $("#submit_prog").hide(), 
    $cbs = $('input[name="prog"]').click(function() { 
     $submit.toggle($cbs.is(":checked")); 
    }); 

}); 

<input type="checkbox" name="?" value="?"> // check all checkbox 

<input type="checkbox" name="prog" value="1"> 
<input type="checkbox" name="prog" value="2"> 

<input type="submit" id="submit_prog" value='Submit' /> 
+0

你試過嗎?:[http://stackoverflow.com/a/7720869/1207958](http://stackoverflow.com/a/7720869/1207958) – svante 2013-04-27 07:24:44

回答

1
  1. 假設id爲selall。
  2. 創建一個類的所有複選框你想使用select選擇所有
$('#selall').click(function(event) { 
    if(this.checked) { 
     // Iterate each checkbox 
     $('.yourchckbox').each(function() { 
      this.checked = true;       
     }); 
     $('#submit_prog').show(); 
    } 
    else { 
    $('.yourchckbox').each(function() 
    { this.checked = false; }); 
    $('#submit_prog').hide() 
    } 
}); 
    $('.yourchckbox').click(function(event) { 
    if(!(this.checked)) { 
    $('#selall').prop('checked', false); 
    } 

    }); 
+0

提交按鈕怎麼樣?當我檢查所有複選框時,它仍然隱藏。 – 2013-04-27 07:54:41

+0

編輯我的答案。在閱讀問題時遺憾地錯過了提交部分。 – 2013-04-27 08:00:12

+0

現在,它的工作。你可以請廣告的功能,如果我至少取消選中其中一個複選框值檢查所有複選框將被取消選中。謝謝。 – 2013-04-27 08:04:15

0

嘗試

$('input:checkbox[name!="prog"]').click(function(){ 
    $('input:checkbox[name="prog"]').prop('checked', $(this).is(':checked')) 
}) 

或者,如果你可以改變複選框id來selall

$('#selall').click(function(){ 
    $('input:checkbox').prop('checked', $(this).is(':checked')) 
}) 
+0

提交按鈕仍然隱藏 – 2013-04-27 07:51:14

0

它很簡單。

讓名此複選框<input type="checkbox" name="check_all" value="1">

現在添加事件:

$('input[name="check_all"]').click(function() { 
    if($(this).is(':checked')) { 
     $('input[name="prog"]').attr('checked', 'checked'); 
    } else { 
     $('input[name="prog"]').removeAttr('checked'); 
    } 

    $('input[name="prog"]:eq(0)').change(); //firing event which we will catch 
}); 

那麼我們應該檢查是否所有input[name="prog"]檢查:

$('input[name="prog"]').change(function() { 
    if($('input[name="prog"]:not(:checked)').length) { 
     $('#submit_prog').hide(); 
    } else { 
     $('#submit_prog').show(); 
    } 
}); 
+0

使用屬性而不是屬性來操作複選框狀態 – Musa 2013-04-27 07:55:50

0

選擇上#all檢查,並檢查所有複選框當所有複選框被選中時#all

<SCRIPT language="javascript"> 
    $(function(){ 

     $("#all").click(function() { 
       $('.one').attr('checked', this.checked); 
    if (this.checked) {$('#submit_prog').hide();} 
(this.checked)?$('#submit_prog').show():$('#submit_prog').hide(); 
     }); 

     $(".one").click(function(){ 

      if($(".one").length == $(".one:checked").length) { 
       $("#all").attr("checked", "checked"); 
       $('#submit_prog').show(); 
      } else { 
       $("#all").removeAttr("checked"); 
$('#submit_prog').hide(); 
      } 

     }); 
    }); 
    </SCRIPT> 

更改ID和類複選框

<input type="checkbox" id="all" > // check all checkbox 

<input type="checkbox" name="prog" class="one" value="1"> 
<input type="checkbox" name="prog" class="one" value="2"> 
+1

檢查全部只工作一次,並且提交按鈕仍然隱藏。 – 2013-04-27 07:42:01

+0

使用屬性而不是屬性來操縱複選框狀態 – Musa 2013-04-27 07:55:33

+0

請參閱編輯的代碼,對我來說工作完全正常 – 2013-04-27 07:55:47

1

給選擇所有複選框的ID,說selectall然後

$('#selectall').click(function(){ 
    if (this.checked){ 
     $('input[name="prog"]').prop('checked', true); 
     $submit.toggle(true); 
    } 
}); 

,如果你想複選框是未選中的,如果全部選擇未選中

$('#selectall').click(function(){ 
    $('input[name="prog"]').prop('checked', this.checked); 
    $submit.toggle(this.checked); 
}); 
$cbs = $('input[name="prog"]').click(function() { 
    $submit.toggle($cbs.filter(':checked').length == 0); 
    if (!this.checked) $('#selectall').prop('checked', false); 
}); 
+0

但是,您也可以手動點擊'name =「prog」',然後'$ submit'可見性將會出錯。 – Kasyx 2013-04-27 07:36:41

+0

@Kasyx怎麼這樣? – Musa 2013-04-27 07:39:04

+0

所以有一個選項,沒有複選框將被「:checked」,你會看到'$ submit'。這是一個錯誤。 – Kasyx 2013-04-27 07:41:05