禁用包含不同属性的复选框

时间:2014-09-30 16:10:28

标签: javascript jquery checkbox

一旦选择了仓库,我试图禁用具有不同仓库位置的复选框。例如,如果我检查加利福尼亚,我想禁用所有来自其他州的复选框。我试图基于属性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 个答案:

答案 0 :(得分:3)

Ragnar的答案很接近,但由于您希望禁用其他州,请使用

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

答案 1 :(得分:2)

尝试使用此行:

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

答案 2 :(得分:1)

&#34;属性不等于选择器&#34;应该有所帮助:

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

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