2012-01-06 57 views
0

我有一個表,看起來像這樣:http://jsfiddle.net/8SEz2/4/jQuery的複選框選中計數問題

Branch StSeq# Inv# Invoice Date Payable Amount  Pay? 
Branch1  2  A2 11/11/2011  49,500.00  checkbox(unchecked) 
Branch1  3  A3 11/11/2011  12,221.55  checkbox(checked) 
Branch3  4  B1 11/11/2011  12,220.56  checkbox(unchecked) 

我試圖做到的是當行複選框狀態改變,我需要數是複選框的數量還檢查了共享相同的分支名稱。

Ex。如果我點擊第一個複選框,(分支1)我應該得到與分支檢查計數和在這種情況下彈出,它應該是2

這是我的jquery:

//Please refer to the jsFiddle for the class names 
//used to track checked branches 
$('input.payMe').change(function() { 
    if ($(this).is(':checked')) { 
    //cm enable 
    var branchName = $(this).parent().prevAll("td.invoiceBranch").html().trim(); 
    var branchCount = 0; 
    $('td.invoiceBranch').each(function(index) { 
     if ($(this).html().trim() == branchName) { 
      branchCount++; 
     } 
    }); 
     alert(branchCount); 
    } 
    else { 
    //cm disable 
     var branchName = $(this).parent().prevAll("td.invoiceBranch").html().trim(); 
     var branchCount = 0; 
     $('td.invoiceBranch').each(function (index) { 
      if ($(this).html().trim() == branchName) { 
       //Needs to select the checkbox to get checked state. 
       //Not sure if this is correct 
       var inputHTML = $(this).nextAll("td.paymentCheckBox").first(); 
       if($(inputHTML).is(":checked")) { 
        branchCount++; 
       } 
      } 
     });  
     alert(branchCount); 
    } 
}); 

任何想法?我被困了2天。謝謝!

+0

爲什麼沒有複選框ID或名稱的一部分的分支名稱代碼?? – mplungjan 2012-01-06 08:40:23

+0

我認爲,但這不是我所需要的。如果選中的分支數量爲0,那麼在該頁面中有另一個表格被禁用。因此,如果選中Branch1的兩個複選框中的一個,我的其他表格的行將被啓用,如果它爲零,則需要再次禁用。這就是爲什麼我需要檢查總數。 – Ron 2012-01-06 08:44:58

回答

3

我想你應該申請一個標籤爲每個複選框與分支的名稱

<input type="checkbox" class="payMe" branch="Branch1" ... /> 

然後有趣的ction應該大致像

$(':checkbox.payMe').change(function() { 
    alert($(':checkbox.payMe[branch="' + $(this).attr('branch') + '"]:checked').length); 
}); 
+0

很好的答案。工作很好。感謝滑翔。 – Ron 2012-01-06 09:23:25

1

在這裏你去:http://jsfiddle.net/8SEz2/2/

我添加的屬性數據分支的複選框

,在這裏他的JS:

$(".payMe").change(function(){ 
    var branch = $(this).attr('data-branch');   
    alert($("input[data-branch='" + branch + "']:checked").length); 
});