2012-02-10 5 views
0

この機能は、チェックボックスを1つずつチェックするときにのみ、totaltqを警告します。しかし、#check_all:alerts totalqt = 0では正常に動作しません。すべてのチェックボックスをJavascriptで同時にチェックする

私が間違っていたことは誰でも説明できますか?

var totalqt=0; 
    $('#check_all').click(function() { 
     $('.checkbox').click();  
     alert(totalqt); 
    });  


$('.checkbox').click(function(e) { 
     e.stopPropagation(); 
     if($(this).closest("tr").not('#hdr').hasClass("row_selected")){ 
      $(this).closest("tr").not('#hdr').removeClass("row_selected"); 
      totalqt=totalqt - parseInt($(this).closest("tr").find("#qt").text(), 10); 
     } 
     else { 
      $(this).closest("tr").not('#hdr').addClass("row_selected"); 
      totalqt=totalqt + parseInt($(this).closest("tr").find("#qt").text()); 
     } 

HTMLは、そのチェックボックスがてmanualy変更されたときに

<tr> 
... 
<td><input type="checkbox" name="checkbox[]" method="post" value="" class="checkbox"/></td> 
... 
</tr> 
+0

'.click()'はイベントハンドラをトリガするだけですが、実際には状態を変更したり、デフォルトのアクションをトリガしたりしません。 –

+2

[Check/Uncheck all checkboxes]の複製が可能です(http://stackoverflow.com/questions/4805056/check-uncheck-all-checkboxes) –

答えて

1

実際にはハンドラをトリガしませんように見えます。このようなことを試してみてください。

<div class="checkall"> 
    <input type="checkbox" id="checkall"> 
</div> 
<div id="list"> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
    <input type="checkbox" /> 
</div> 

をとjQuery:

function doIt(obj){ 
     if($(obj).closest("tr").not('#hdr').hasClass("row_selected")){ 
      $(obj).closest("tr").not('#hdr').removeClass("row_selected"); 
      totalqt=totalqt - parseInt($(obj).closest("tr").find("#qt").text(), 10); 
     } 
     else { 
      $(obj).closest("tr").not('#hdr').addClass("row_selected"); 
      totalqt=totalqt + parseInt($(obj).closest("tr").find("#qt").text()); 
     } 
} 

その後、

$('.checkbox').click(function(e) { 
     e.stopPropagation(); 
     doIt(this); 
}); 

$('#check_all').click(function() { 
     if($(this).prop('checked')){ 
      $('.checkbox').each(function(){ 
       $(this).prop('checked', true);  
       doIt(this); 
       alert(totalqt); 
      }); 
     }else{ 

      $('.checkbox').each(function(){ 
       $(this).prop('checked', false);  
       doIt(this); 
       alert(totalqt); 
      }); 
     } 

}); 
+0

は機能しません。同じ結果 –

+0

は答えを更新しました..それを試してください。 –

+0

は、すべてのチェックをチェックするための画面http://screencast.com/t/c7GlBjwdh5Xを表示します。アンティック - 何かをすべてアンチッキにしないでください –

0

が、私は次のように私の答えを変更したが、これを試してみてください

var checkboxes = $(":checkbox", "#list").change(function() { 
    var allIsChecked = checkboxes.length === checkboxes.filter(":checked").length; 

    checkAll[0].checked = allIsChecked; 

});

var checkAll = $("#checkall").change(function() { 
     checkboxes.prop("checked",this.checked); 
}); 
+0

は動作しません。同じ結果 –

+0

すべてのコードを変更しました。もう一度やり直してください。 – Downpour046

関連する問題