2010-02-02 3 views
5

Ich bin ein wenig verwirrt, wie man das macht ...jQuery - Holen Sie einen Eingabefeld Wert aus der letzten Zeile in einer Tabelle?

Ich habe eine Tabelle, die eine Reihe von Zeilen hat, und innerhalb jeder Zelle gibt es bestimmte Formularelemente. Ich versuche, den Wert aus dem „Code“ Eingabefeld aus der letzten Reihe nur zu bekommen, und habe Probleme mit der Syntax ...

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

Antwort

11

Versuchen:

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

Oder angepasst, um 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 im Code, haben Sie nicht übereinstimmen Anführungszeichen in dem $("#cont') Teil und Ihre Eingabe Suche ist falsch. Was Sie jetzt haben, ist:

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

Als > außerhalb zitiert ist, ist es nicht ein String ist, sondern ein Vergleichsoperator, der nun tr zu 'input[name="code"]' vergleicht. Vergleichsoperatoren Rückkehr immer Boolesche Werte (wahr oder falsch), so dass Sie effektiv dies zu tun:

$(true).val(); 

die nicht viel Sinn macht. Wenn Sie ein jQuery-Objekt haben, können Sie die Methode find verwenden, um untergeordnete Objekte dieses Objekts zu finden, oder alternativ das Element als Kontext an die Funktion $() übergeben. So werden diese beiden arbeiten und sind gleich:

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

Es gibt eigentlich keinen Grund, die tr auf seine eigene Variable in Ihrem Fall zu speichern, wie Sie den Wert bekommen kann in nur eine Erklärung, wie oben gezeigt.

+0

Danke dafür. Und für die Erklärung! – n00b0101

Verwandte Themen