JQuery - obtener valor de un input en tabla dinamica

 
Vista:
sin imagen de perfil

obtener valor de un input en tabla dinamica

Publicado por mauro (1 intervención) el 03/08/2017 02:39:41
hola muy buena tarde, espero me pueda ayudar, estoy en un proyecto donde necesito generar una proforma de articulos seleccionados de un listado de productos almacenados en una db y mostrados mediante una tabla dinamica creada con js. pero necesito obtener el valor que el usuario ingrese manualmente a un input y multiplicarlo con el precio del producto, pero como es una tabla dinamica, no se como obtener el valor del input mediante su id, si al momento de generar la tabla todos los input generados tienen el mismo id. como podria solucionar esto,
este es el codigo el js que me arma la tabla dinamica

la parte de ajax es para generar una busqueda en tiempo real,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function cargar_plantilla(valor){
	$.ajax({
		url:'./Controllers/articulo.php',
		type:'POST',
		data:'valor='+valor+'&boton=buscar_plantilla'
	}).done(function(resp){
		//alert(resp);
		var valores = eval(resp);
		html="<table class='table table-bordered table-striped table-hover'><thead><tr class='info'><th>#</th><th>Cantidad</th><th>Nombre</th><th>Precio Unidad</th><th>Sub-Total</th><th>Operacio</th>";
		for(i=0;i<valores.length;i++){
			datos=valores[i][0]+"*"+valores[i][1]+"*"+valores[i][2]+"*"+valores[i][3]+"*"+valores[i][4];
			html+="<tr><td>"+(i+1)+"</td><td><input id='cantidad' onblur='multiplicar();'></td><td>"+valores[i][0]+"</td><td><input id='precio' value='"+valores[i][1]+"'</input></td><td><input id='sub-total'></input></td><td><button class='btn btn-danger' onclick='eliminar("+'"'+valores[i][0]+'"'+")'>Eliminar</button></tr>";
		}
 
		html+="</tbody></table>"
		$("#lista_plantilla").html(html);
	});
}

el codigo html es bastante sencillo solo es un div class="lista_plantilla"

y la funcion para multiplicar los valores obtenidos es este

1
2
3
4
5
6
function multiplicar(){
	var cantidad = document.getElementsById("cantidad").value;
	var precio = document.getElementsById("precio").value;
	var resultado = cantidad * precio;
	document.getElementById("sub-total").value= resultado;
}

pero al hacerlo asi solo me funciona para el primer producto de la tabla, no me funciona para los demas como podria solucionar mi problema
de antemano muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

obtener valor de un input en tabla dinamica

Publicado por Octavio (11 intervenciones) el 10/08/2017 10:23:01
Ten en cuenta que los id tienen que ser únicos. en tu caso estás añadiendo el mismo id a distintos inputs en cada iteración del bucle. Te recomiendo que añadas un índice al final del id (cantidad0, cantidad1, cantidad2) y a demás la función multiplicar() debería recibir ese índice como parámetro. Quedaría algo así.

1
2
3
4
5
6
for(i=0;i<valores.length;i++){
    datos=valores[i][0]+"*"+valores[i][1]+"*"+valores[i][2]+"*"+valores[i][3]+"*"+valores[i][4];
    html+="<tr><td>"+(i+1)+"</td><td><input id='cantidad" + i + "' onblur='multiplicar(" + i + ");'></td><td>"+valores[i][0]+"</td><td><input id='precio" + i + "'
    value='"+valores[i][1]+"'</input></td><td><input id='sub-total" + i + "'></input></td><td><button class='btn btn-danger'
    onclick='eliminar("+'"'+valores[i][0]+'"'+")'>Eliminar</button></tr>";
}

1
2
3
4
5
6
function multiplicar(index){
	var cantidad = document.getElementsById("cantidad" + index).value;
	var precio = document.getElementsById("precio" + index).value;
	var resultado = cantidad * precio;
	document.getElementById("sub-total" + index).value= resultado;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar