2014-09-30 54 views
0

我試圖在選擇倉庫後禁用具有不同倉庫位置的複選框。例如,如果我選中加利福尼亞州,我想禁用所有來自其他州的複選框。我想基於屬性whseID做到這一點,但我無法弄清楚如何讓jquery在該屬性之間做出區分。有時我會從1個倉庫中運送多件物品。因此,當我在加利福尼亞州選中1複選框時,我需要加利福尼亞的另一個複選框才能啓用,但我需要禁用華盛頓和亞利桑那州。禁用包含不同屬性的複選框

<table width="50%" border="0" cellspacing="0" cellpadding="0"> 
    <tr class="grdnt"> 
     <th style="color:black;">Checkbox</th> 
     <th style="color:black;border-left:1px solid;">Warehouse</th> 
     <th style="color:black;border-left:1px solid;">Item</th> 
    </tr> 
    <tr id="transferDetailCol"> 
     <td> 
      <input type="checkbox" class="tfrCheck" name="tfrCheck[]" whseID="CA" /> 
     </td> 
     <td class="Whse">California</td> 
     <td class="Item">J29458</td> 
    </tr> 
    <tr id="transferDetailCol"> 
     <td> 
      <input type="checkbox" class="tfrCheck" name="tfrCheck[]" whseID="CA" /> 
     </td> 
     <td class="Whse">California</td> 
     <td class="Item">J29478</td> 
    </tr> 
    <tr id="transferDetailCol"> 
     <td> 
      <input type="checkbox" class="tfrCheck" name="tfrCheck[]" whseID="WA" /> 
     </td> 
     <td class="Whse">Washington</td> 
     <td class="Item">J29478</td> 
    </tr> 
    <tr id="transferDetailCol"> 
     <td> 
      <input type="checkbox" class="tfrCheck" name="tfrCheck[]" whseID="AZ" /> 
     </td> 
     <td class="Whse">Arizona</td> 
     <td class="Item">J29478</td> 
    </tr> 
</table> 

$(document).on('click', '.tfrCheck', function() { 
    var allCheckBox = $(".tfrCheck"); 
    var count_checked = allCheckBox.filter(":checked").length; 
    var whseID = $(this).attr('whseID'); 
    if (count_checked >= 1) { 

     $(".tfrCheck:contains(whseID)").attr('disabled', 'disabled'); 
     //$(".tfrCheck:not(:checked)").attr('disabled','disabled'); 

    } else { 
     $(".tfrCheck").removeAttr('disabled'); 
    } 
}); 

JSFIDDLE

回答

3

拉格納的答案是接近的,但既然你想其他國家被禁用,則使用

$('.tfrCheck:not([whseID='+ whseID +'])').attr('disabled', 'disabled'); 
+0

這是正確的+1 – Ragnar 2014-09-30 16:26:24

2

嘗試使用這一行:

$('.tfrCheck:not([whseID='+ whseID +'])').attr('disabled', 'disabled'); 
+2

的'='應該是'!='我相信。 – Stryner 2014-09-30 16:16:32

1

的「屬性不等於選擇器「應該有幫助:

allCheckBox.filter('[whseID!="' + whseID + '"]').attr('disabled', true); 

http://jsfiddle.net/oxkeL7jm/4/