jQuery - получить значение поля ввода из последней строки в таблице? - PullRequest
5 голосов
/ 02 февраля 2010

Я немного запутался, как это сделать ...

У меня есть таблица, в которой есть ряд строк, и в каждой ячейке есть определенные элементы формы. Я пытаюсь получить значение из поля ввода «код» только из последней строки, и у меня проблемы с синтаксисом ...

Упрощенная таблица выглядит так:

<table id="table1">
<tr><td><input type="hidden" name="code" value="XFT" /></td></tr>
<tr><td><input type="hidden" name="code" value="ETY" /></td></tr>
<tr><td><input type="hidden" name="code" value="DHQ" /></td></tr>
</table>

А вот jquery, который не работает ...

if($('#cont')) {
            $("#cont').live('click', function(event) {
                var tr = $('#wr-viewcarttable tr:last');
                var itemcode = $(tr > 'input[name="code"]').val();
                window.location = "/search?p="+itemcode;
            });
        }

1 Ответ

11 голосов
/ 02 февраля 2010

Попробуйте это:

$('table#table1 tr:last input[name=code]').val();

Или с учетом вашего кода:

$('#cont').live('click', function(event) {
    var tr = $('#wr-viewcarttable tr:last');
    var itemcode = tr.find('input[name=code]').val();
    window.location = "/search?p="+itemcode;
});

В вашем коде есть две ошибки, у вас не совпадают кавычки в $("#cont')Ваш входной поиск неверен.Теперь у вас есть:

$(tr > 'input[name="code"]').val();

Поскольку > находится вне кавычек, это не строка, а оператор сравнения, который теперь сравнивает tr с 'input[name="code"]'.Операторы сравнения всегда возвращают логические значения (true или false), поэтому вы эффективно делаете это:

$(true).val();

Что не имеет особого смысла.Если у вас есть объект jQuery, вы можете использовать метод find, чтобы найти дочерние элементы этого объекта, или альтернативно передать элемент в качестве контекста в функцию $().Таким образом, эти два будут работать и будут равны:

tr.find('input[name=code]').val();
$('input[name=code]', tr).val();

На самом деле нет смысла сохранять tr в его собственной переменной в вашем случае, так как вы можете получить значение только в одной декларации, как показано выше.

...