我的下表中有复选框,可以比较每行中的内容,最多可比较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>
答案 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));
});