2013-02-06 41 views
20

Đây là mã của tôi:Cách đếm từng hộp kiểm đã chọn

Hộp kiểm tra thực sự được đánh dấu và ghi vào bên trong <span class="counter"></span>. Mã này hoạt động trên Firefox, nhưng không hoạt động trên Chrome.

Trên Chrome, .select_all chọn tất cả các hộp kiểm tôi muốn nhưng không cập nhật bộ đếm. Trên thực tế, bộ đếm được cập nhật khi tôi bỏ chọn .select_all, điều này thật lạ.

SỰ THẬT QUAN TRỌNG: Tôi không muốn đếm các hộp kiểm bên .Select_all .counter tôi

jQuery(document).ready(function($){ 

$(function() { 
    $('#general i .counter').text(' '); 

    var generallen = $("#general-content input[name='wpmm[]']:checked").length; 
    if(generallen>0){$("#general i .counter").text('('+generallen+')');}else{$("#general i .counter").text(' ');} 
}) 

$("#general-content input:checkbox").on("change", function() { 
    var len = $("#general-content input[name='wpmm[]']:checked").length; 
    if(len>0){$("#general i .counter").text('('+len+')');}else{$("#general i .counter").text(' ');} 
}); 


$(function() { 
    $('.select_all').change(function() { 
     var checkthis = $(this); 
     var checkboxes = $(this).parent().next('ul').find("input[name='wpmm[]']"); 

     if(checkthis.is(':checked')) { 
      checkboxes.attr('checked', true); 
     } else { 
      checkboxes.attr('checked', false); 
     } 
    }); 
}); 

}); 

EDIT: Đây là một tài liệu ví dụ về mã: http://jsfiddle.net/8PVDy/1/

+0

lý do tại sao bạn không thử đơn giản javascript – polin

+0

Bạn có thể cung cấp một làm việc [jsFiddle] (http://jsfiddle.net) diễn tả vấn đề? –

+1

xem bài đăng này ..http: //stackoverflow.com/questions/8011556/how-to-count-check-boxes-using-jquery – Rinku

Trả lời

48

Bạn có thể sử dụng chức năng để cập nhật bộ đếm:

function updateCounter() { 
    var len = $("#general-content input[name='wpmm[]']:checked").length; 
    if(len>0){$("#general i .counter").text('('+len+')');}else{$("#general i .counter").text(' ');} 
} 

và gọi hàm này khi chec nhà nước kbox được thay đổi (bao gồm các hộp kiểm SelectAll)

Dưới đây là một jsFiddle Cập nhật: http://jsfiddle.net/8PVDy/4/

+0

Nó hoạt động ! nghĩ rằng bạn rất nhiều! – hawkidoki

35
$('input[type="checkbox"]:checked').length 
+0

QUAN TRỌNG: Tôi không muốn đếm các hộp kiểm .Select_all bên trong .counter – hawkidoki

+2

'$ ('input [type =" checkbox "]: checked'). Not ('. Select_all'). Length' – Paul

2

Để cập nhật tình trạng kiểm tra sử dụng jQuery.prop() chức năng

Code:

$(function(){ 
    $('#general i .counter').text(' '); 

    var fnUpdateCount = function() { 
     var generallen = $("#general-content input[name='wpmm[]']:checked").length; 
     console.log(generallen,$("#general i .counter")) 
     if (generallen > 0) { 
      $("#general i .counter").text('(' + generallen + ')'); 
     } else { 
      $("#general i .counter").text(' '); 
     } 
    }; 

    $("#general-content input:checkbox").on("change", function() { 
       fnUpdateCount(); 
      }); 

    $('.select_all').change(function() { 
       var checkthis = $(this); 
       var checkboxes = $("#general-content input:checkbox"); 

       if (checkthis.is(':checked')) { 
        checkboxes.prop('checked', true); 
       } else { 
        checkboxes.prop('checked', false); 
       } 
       fnUpdateCount(); 
      }); 
}); 

Demo: Fiddle

0

Hãy thử điều này.

$('.select_all').change(function() { 
var num = $(this).find("input[name='wpmm[]']:checked").length; 
$("#general .counter").html(num); 
}); 
0

Modified select all-handler để kích hoạt chức năng onchange cho các hộp kiểm tiểu thể loại như thế này

$(function() { 
    $('.select_all').change(function() { 
     var checkthis = $(this); 
     var checkboxes = $(this).parent().next('ul').find("input[name='wpmm[]']"); 

     if(checkthis.is(':checked')) { 
      checkboxes.attr('checked', true); 
     } else { 
      checkboxes.attr('checked', false); 
     } 
     // make sure to trigger the onchange behaviour for the checkboxes 
     $("#general-content input:checkbox").change(); 
    }); 
}) 

tôi dường như nhớ rằng có một cách đẹp hơn để kích hoạt chúng, nhưng có thể' t thấy nó

9

bạn có thể làm theo cách này

$(document).ready(function(){ 
$('input[type="checkbox"]').click(function(){ 
    alert($('.test:checked').length); 

}); 
}); 

HTML i sử dụng

<input type="checkbox" name="test" class="test" value=""/> 
<input type="checkbox" name="test" class="test" value=""/> 
<input type="checkbox" name="test" class="test" value=""/> 
<input type="checkbox" name="checkAll" class="checkAll" value=""/> 

Hope this helps

Các vấn đề liên quan