我想向表中的每个文本框元素添加一个键向上事件,不包括每行中的最后一个文本框。该表在两个轴上都是动态的。
键起来事件将除了最后一个文本框之外的所有值中的值。然后将总数放在行的最后一个文本框中。
总计和设置总计的脚本工作正常。
我厌倦了以下选择目标元素:
$("#Grid tr input:text:not(:last)").keyup(function(){
//do total stuff here
})
不幸的是,它的工作原理是记录的,而不是我想要的,只选择最后一个复选框。
理想情况下,解决方案不会涉及下面的表示例的任何进一步标记或涉及任何循环。但是,如果这是它需要的,那就这样吧。
<table id="Grid">
<tr id="r1">
<td>Row 1</td>
<td><input type="text" id="txt_a1_b1"></td>
<td><input type="text" id="txt_a1_b2"></td>
<td><input type="text" id="txt_a1_b3"></td>
<td><input type="text" id="txt_a1_b4"></td>
<td><input type="text" id="total_a1"></td>
</tr>
<tr id="r2">
<td>Row 2</td>
<td><input type="text" id="txt_a2_b1"></td>
<td><input type="text" id="txt_a2_b2"></td>
<td><input type="text" id="txt_a2_b3"></td>
<td><input type="text" id="txt_a2_b4"></td>
<td><input type="text" id="total_a2"></td>
</tr>
<tr id="r3">
<td>Row 3</td>
<td><input type="text" id="txt_a3_b1"></td>
<td><input type="text" id="txt_a3_b2"></td>
<td><input type="text" id="txt_a3_b3"></td>
<td><input type="text" id="txt_a3_b4"></td>
<td><input type="text" id="total_a3"></td>
</tr>
</table>
最后一点,总文本框确实需要是一个文本框,因为还需要输入总数然后将其拆分到整个行中,并且我不希望在整个文本框中使用键加功能。 / p>
答案 0 :(得分:3)
我很惊讶没有人得到这个:
$("#Grid tr :not(:last-child) :text").keyup(function(){
//do total stuff here
})
答案 1 :(得分:0)
我会在行上使用每个函数,并查找每行中的最后一个输入。
$('#Grid > tr').each( function() {
$(this).find('input:not(:last)).keyup( ... )
});
答案 2 :(得分:0)
这个在所有TR中找到所有输入(除了最后一个)
$("#Grid tr").find("input:text:not(:last)")
答案 3 :(得分:-1)
如果您想一次性完成所有操作,请使用:last-child
:
... $('table tr input:not(:last-child)') ...
来自文档:“虽然:最后只匹配一个元素,但它匹配多个,每个父元素一个。”