Как выбрать все текстовые поля в таблице, кроме последнего в строке таблицы с помощью JQuery - PullRequest
1 голос
/ 12 марта 2009

Я хочу добавить событие key up для каждого элемента текстового поля в таблице, исключая последнее текстовое поле в каждой строке. Таблица является динамической по обеим осям.

Событие key up будет суммировать значения во всех текстах, кроме последнего. Итог помещается в последнее текстовое поле для строки.

Скрипт для суммирования и установки итогов все отлично работает.

Я устал от выбора целевых элементов:

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

И последнее замечание: текстовое поле итога должно быть текстовым полем, поскольку существует также требование ввести итоговое значение, а затем разбить его по строке, и я не хочу, чтобы в текстовом поле итога использовалась функция подбора.

Ответы [ 4 ]

3 голосов
/ 12 марта 2009

Я удивлен, что никто еще не понял этого:

$("#Grid tr :not(:last-child) :text").keyup(function(){
    //do total stuff here
})
0 голосов
/ 12 марта 2009

Я бы использовал каждую функцию в строках и нашел бы все, кроме последнего ввода в каждой строке.

$('#Grid > tr').each( function() {
    $(this).find('input:not(:last)).keyup( ... )
});
0 голосов
/ 12 марта 2009

Этот находит все входные данные (кроме последнего) во всех TR

$("#Grid tr").find("input:text:not(:last)")
0 голосов
/ 12 марта 2009

Если вы хотите сделать все это одним выстрелом, используйте :last-child:

... $('table tr input:not(:last-child)') ...

Из документации: «Хотя: last соответствует только одному элементу, это соответствует более чем одному, одному для каждого родителя».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...