将数字添加到复选框属性并限制已选中复选框的数量

时间:2014-10-30 06:35:32

标签: javascript jquery

我的下表中有复选框,可以比较每行中的内容,最多可比较3个项目。

所以我想要一些只允许选择3个复选框的jQuery,然后它会动态地在name属性的末尾添加一个数字。

因此,如果有2个要比较,名称属性将是“horse_1”和“horse_2”。

我不知道从哪里开始!

        <tr>
            <td><input type="checkbox" value="2560092" name="horse_"></td>
            <td>1</td>
        </tr>
        <tr>
            <td><input type="checkbox" value="2560093" name="horse_"></td>
            <td>2</td>
        </tr>
        <tr>
            <td><input type="checkbox" value="2560094" name="horse_"></td>
            <td>3</td>
        </tr>
        <tr>
            <td><input type="checkbox" value="2560095" name="horse_"></td>
            <td>4</td>
        </tr>

1 个答案:

答案 0 :(得分:2)

您可以使用以下方式获取所选元素的数量:

var selected = $('input:checked')
selected.length

如果所选元素的数量为3,则可以禁用所有未选中的输入。这里使用jQuery:not()选择器来获取:checked属性的反转。

    if (selected.length == 3) {
        $("input:not(:checked)").prop('disabled', true);
    }

然后添加一个else语句,这样如果没有选择3则不会禁用任何输入。

    else {
        $("input").prop('disabled', false);
    }

然后,您可以使用.each()迭代每个已检查的元素以更新其名称,使用集合中元素的索引作为数值,将值加1以抵消零索引:

    $('input:checked').each(function(index, element) {
        $(element).attr('name', 'horse_' + (index + 1));
    });

http://jsfiddle.net/bj8L0ct2/1/