2010-02-02 20 views
5

Estoy un poco confundido sobre cómo hacer esto ...jQuery: ¿obtiene un valor de campo de entrada de la última fila en una tabla?

Tengo una tabla que tiene una serie de filas, y dentro de cada celda, hay ciertos elementos de formulario. Estoy tratando de obtener el valor del campo de entrada "código" de sólo la última fila, y estoy teniendo problemas con la sintaxis ...

mesa simplificado se ve así:

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

Y, aquí está el jQuery que no funciona ...

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

Respuesta

11

Prueba esto:

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

O, ajustado a su código:

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

usted tiene dos errores en su código, usted tiene cotizaciones no coincidentes en la parte $("#cont') y su búsqueda de entrada que está mal. Lo que tenemos ahora es:

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

A medida que el > es cotizaciones fuera, no es una cadena, pero un operador de comparación, que compara ahora tr a 'input[name="code"]'. Los operadores de comparación siempre devuelven valores booleanos (verdadero o falso), por lo que está haciendo efectivamente esto:

$(true).val(); 

lo cual no tiene mucho sentido. Si tiene un objeto jQuery, puede usar el método find para encontrar los elementos secundarios de ese objeto o, alternativamente, pasar el elemento como contexto a la función $(). Así que estos dos va a funcionar y son iguales:

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

En realidad hay ninguna razón para guardar el tr a su propia variable en su caso, que se puede obtener el valor en una sola declaración, como se muestra arriba.

+0

Gracias por esto. Y para la explicación! – n00b0101

Cuestiones relacionadas