如何选择表中的所有文本框,不包括使用JQuery的表行中的最后一个文本框

时间:2009-03-12 11:23:57

标签: javascript jquery

我想向表中的每个文本框元素添加一个键向上事件,不包括每行中的最后一个文本框。该表在两个轴上都是动态的。

键起来事件将除了最后一个文本框之外的所有值中的值。然后将总数放在行的最后一个文本框中。

总计和设置总计的脚本工作正常。

我厌倦了以下选择目标元素:

$("#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>

4 个答案:

答案 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)') ...

来自文档:“虽然:最后只匹配一个元素,但它匹配多个,每个父元素一个。”