6 Stimmen

jQuery - erhalten ein Eingabefeld Wert aus der letzten Zeile in einer Tabelle?

Ich bin ein wenig verwirrt, wie ich das machen soll...

Ich habe eine Tabelle mit einer Reihe von Zeilen, und in jeder Zelle gibt es bestimmte Formularelemente. Ich versuche, den Wert aus dem "Code"-Eingabefeld nur aus der letzten Zeile zu erhalten, und habe Probleme mit der Syntax...

Die vereinfachte Tabelle sieht wie folgt aus:

<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>

Und, hier ist die Jquery, die nicht funktioniert...

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;
            });
        }

13voto

Tatu Ulmanen Punkte 119424

Versuchen Sie dies:

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

Oder, angepasst an Ihren Code:

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

Sie haben zwei Fehler in Ihrem Code, Sie haben falsche Anführungszeichen in der $("#cont') Teil und Ihre Eingabesuche ist falsch. Was Sie jetzt haben, ist:

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

Da die > außerhalb von Anführungszeichen steht, handelt es sich nicht um eine Zeichenkette, sondern um einen Vergleichsoperator, der nun Folgendes vergleicht tr a 'input[name="code"]' . Vergleichsoperatoren geben immer boolesche Werte zurück (wahr oder falsch), so dass Sie dies effektiv tun:

$(true).val();

Das macht nicht viel Sinn. Wenn Sie ein jQuery-Objekt haben, können Sie die find Methode, um alle Kinder dieses Objekts zu finden, oder übergeben Sie alternativ das Element als Kontext an die $() Funktion. Diese beiden werden also funktionieren und sind gleichwertig:

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

Es gibt eigentlich keinen Grund, die tr in eine eigene Variable umwandeln, da Sie den Wert in nur einer Deklaration erhalten können, wie oben gezeigt.

0 Stimmen

Vielen Dank dafür. Und für die Erklärung!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X