Foros del Web » Programando para Internet » Javascript »

Realizar Multiplicación en Inputs Dinamicos

Estas en el tema de Realizar Multiplicación en Inputs Dinamicos en el foro de Javascript en Foros del Web. Buen dia, tarde o noche, les escribo porque agote mis mas básicos conocimientos en JS con respecto a esto, es decir, necesito multiplicar 2 input ...
  #1 (permalink)  
Antiguo 25/09/2015, 07:43
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Pregunta Realizar Multiplicación en Inputs Dinamicos

Buen dia, tarde o noche, les escribo porque agote mis mas básicos conocimientos en JS con respecto a esto, es decir, necesito multiplicar 2 input que se crean de manera dinamica en una factura, serial aglgo asi:

precio unitario * cantidad = total

y asi con cada linea

este es el codigo del formulario donde se crean las lineas:

Código HTML:
Ver original
  1. <form name="recarga" action="recarga_pago.php" method="POST" enctype="multipart/form-data"><table id="tablatracking" width="100%">
  2.         <tbody>
  3.          <tr>
  4.                 <td align="left"><input onclick="agregarUsuario()" type="button" value="Agregar Recargo" id="boton_agregar" class="btn btn-success"></td>
  5.           </tr>
  6.             <tr>
  7.               <td width="100" id="titulo">Cédula</td>
  8.               <td width="50">Articulo</td>
  9.                 <td width="33">Punitario</td>
  10.                 <td width="33">Cantidad</td>
  11.                 <td width="33">Total</td>
  12.             </tr>
  13.         </tbody>
  14.     </table>
  15.     <input type="submit" value="Registrar" name="boton" id="boton_enviar" class="btn btn-warning" />
  16.   </form>

y este es el codigo que genera las lineas dinamicamente:

Código Javascript:
Ver original
  1. // <![CDATA[
  2.  
  3. var posicionCampo = 1;
  4.  
  5.  
  6. function agregarUsuario() {
  7.  
  8.     nuevaFila = document.getElementById("tablatracking").insertRow(-1);
  9.  
  10.     nuevaFila.id = posicionCampo;
  11.  
  12.     nuevaCelda = nuevaFila.insertCell(-1);
  13.  
  14.     nuevaCelda.innerHTML = "<td><input type='text' size='15' name='cedula[" + posicionCampo + "]' value='' placeholder=' Cedula...' required readonly id='texto[" + posicionCampo + "]' /></td>";
  15.    
  16.     nuevaCelda = nuevaFila.insertCell(-1);
  17.  
  18.     nuevaCelda.innerHTML = "<td><input type='text' size='70' name='articulo[" + posicionCampo + "]' value='' placeholder=' Articulo' required></td>";
  19.  
  20.     nuevaCelda = nuevaFila.insertCell(-1);
  21.    
  22.     nuevaCelda.innerHTML = "<td><input type='text' size='10' name='p_unitario[" + posicionCampo + "]' id='p_unitario[" + posicionCampo + "]' value='0' placeholder=' Bs.' required'/></td>";
  23.    
  24.     nuevaCelda = nuevaFila.insertCell(-1);
  25.    
  26.     nuevaCelda.innerHTML = "<td><input type='text' size='5' name='cantidad[" + posicionCampo + "]' value='0' onChange='javascript:calcula()' id='cantidad[" + posicionCampo + "]'/></td>";
  27.    
  28.     nuevaCelda = nuevaFila.insertCell(-1);
  29.    
  30.     nuevaCelda.innerHTML = "<td><input type='text' size='15' name='total[" + posicionCampo + "]' value='' placeholder='' required id='total[" + posicionCampo + "]'/></td>";
  31.  
  32.     nuevaCelda = nuevaFila.insertCell(-1);
  33.  
  34.     nuevaCelda.innerHTML = "<td><input type='button' id='eliminar' value='-' onclick='eliminarUsuario(this)' class='btn btn-danger'></td>";
  35.    
  36.     var copiar = document.getElementById("texto1");
  37.     var pegar = document.getElementById("texto[" + posicionCampo + "]");
  38.     pegar.value = copiar.value;
  39.    
  40.    
  41. /*ESTA ES LA FUNCION QUE INTENTE PERO NO FUNCIONO*/
  42.     function calcula(){
  43.     var monto = document.getElementById("p_unitario[" + posicionCampo + "]");
  44.     var canti = document.getElementById("cantidad[" + posicionCampo + "]");
  45.     var calculo = monto * canti;
  46.    
  47.     document.getElementById("total[" + posicionCampo + "]").value = calculo;
  48.     }
  49.  
  50.     posicionCampo++;
  51.  
  52. }
  53.  
  54.  
  55. function eliminarUsuario(obj) {
  56.  
  57.     var oTr = obj;
  58.  
  59.     while(oTr.nodeName.toLowerCase() != 'tr') {
  60.  
  61.         oTr=oTr.parentNode;
  62.  
  63.     }
  64.  
  65.     var root = oTr.parentNode;
  66.  
  67.     root.removeChild(oTr);
  68.  
  69. }

como ven esta comentada la función que intente realizar para la tarea pero no anda, cabe destacar que si esa misma función la utilizo con ciertas modificaciones para copiar el contenido de un input externo al form a otro dinamico denbtro del form, si funciona, si me pueden colaborar se los agradeceria bastante.

Gracias de antemano.
__________________
[email protected]
HITCEL
  #2 (permalink)  
Antiguo 25/09/2015, 16:51
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Realizar Multiplicación en Inputs Dinamicos

Te recomiendo que cambies de manual/curso para aprender javascript.

- Ya hace una eternidad que no se usan tablas para el maquetar páginas web.
- Las llamadas de javascript inline en el html es una mala praxis que, en mi opinión, los que empiezan a aprender a estas alturas ya no se les debería ni enseñar.
- Tu código pide a gritos unos cuantos bucles.
- Evita las variables globales en la medida de lo posible.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils
  #3 (permalink)  
Antiguo 25/09/2015, 19:45
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Realizar Multiplicación en Inputs Dinamicos

Se agradece tu recomendación y te aseguro que la voy a tomar en cuenta. Gracias, pero igual tengo que solucionar esto al cliente, yo programo es en php y resulta que esto está incrustado en la pagina y pues el cliente le encanta y como no trabajo con js no tengo ni idea de como solucionarle esto, si tuvieras alguna ideita de por donde empezar te lo agradeceria. Saludos y Gracias nuevamente!!
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 25/09/2015, 23:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Realizar Multiplicación en Inputs Dinamicos

La función de cálculo no necesita ir dentro de la que crea la fila, pues, por cada clic, se volverá a declarar de manera innecesaria. Tenla por fuera.

Por otro lado, creo que lo conveniente sería que envíes la posición del campo como argumento a la función, puesto que su valor se modificará y no volverá a ser el mismo.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 01/10/2015, 15:55
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Realizar Multiplicación en Inputs Dinamicos

bien lo posteo aqui mismo para no repetir, encontre este codigo que genera las filas con divs y realiza una suma pero no he podido hacer que me realice una multiplicacion entre el campo precio * cantidad, como les dije no soy muy diestro en esto de js, lo he intentado cambiando el cidgo por funciones logicas pero nada, creo que lo he esta asiendo mal, aqui el código:

Código Javascript:
Ver original
  1. //<![CDATA[
  2. $(window).load(function(){
  3. $('#calc>span').click(function(){
  4.     $(this).parent().append('<p><input type="text" name="cantidad[]" /> <input type="text" name="precio[]" /> <input type="text" name="total[]" readonly="" /> </p>');
  5. });
  6.  
  7. $('#calc').on('keyup','input',function(){
  8.     var totalCost = 0; $(this).parent().find('input[name="cantidad[]"],input[name="precio[]"]').each(function(){
  9.        
  10.         if($(this).val()!=''){
  11.            
  12.             totalCost += parseInt($(this).val(),10);
  13.         }
  14.       });
  15.     $(this).parent().find('input:last-child').val(totalCost+ ' Bs.');
  16. });
  17. });//]]>
si me pueden hechar una manita Muchisimas Gracias!!!
__________________
[email protected]
HITCEL

Etiquetas: dinamicos, formulario, funcion, input, inputs, js, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:31.