Accediendo a la matriz de nombres de entrada usando JavaScript

Tengo el siguiente formulario HTML

<form action="#" method="post">

 <table>
 <tr>  
  <td><label>Product:<label> <input type="text" /></td>
  <td><label>Price:<label> <input type="text" /></td>
  <td><label>Quantity:<label> <input type="text"/></td>
  <td><label>Amount:<label> <input type="text" name="amount[]"/></td>
 </tr>

 <tr>  
 <td><label>Product:<label> <input type="text" /></td>
 <td><label>Price:<label> <input type="text" /></td>
 <td><label>Quantity:<label> <input type="text"/></td>
 <td><label>Amount:<label> <input type="text" name="amount[]"/></td>
 </tr>

 <!---only two rows have been created by the user -->


 <input type="button" value="Add product" onClick="addProductRow()"/> 
 <input type="submit" value="Submit"/>
 </table>  
</form>

Los campos de entrada son creados dinámicamente por el usuario (hay un botón para agregar una fila a la página). Cuando el usuario agrega el precio y la cantidad, la cantidad (precio * cantidad) debe mostrarse en el campo de cantidad relevante.

Mi problema es, ¿cómo puedo acceder a cada campo de cantidad para insertar la cantidad total usando JavaScript o jQuery?

Gracias de antemano.

preguntado el 12 de junio de 12 a las 15:06

¿Has probado algo? -

3 Respuestas

Lo que yo haría en este caso es usar parentNode hasta llegar al contenedor <tr>y luego use ese nodo de fila de la tabla para buscar los campos de entrada.

Respondido el 12 de junio de 12 a las 15:06

También debe agregar una ID a cada campo (un nombre de matriz como quantityfields[] y pricefields[] también funciona) y use el estándar document.getElementById("quantityfields[0]")

Yo tambien he visto document.getElementsByName(name) que devolverá una matriz que puede atravesar y hacer lo que quiera, y no tendría que usar una identificación adicional, pero creo getElementById Es más común.

Respondido el 12 de junio de 12 a las 15:06

usando jQuery (en caso de que no tenga identificaciones y solo haya una tabla en la página)

var total;
$("table").find("tr").each(function(index, elem){
    total = total + parseInt($("td:eq(3) input", this).val());
});

Respondido el 12 de junio de 12 a las 15:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.