Foros del Web » Programando para Internet » Jquery »

Suma de inputs dinamicos

Estas en el tema de Suma de inputs dinamicos en el foro de Jquery en Foros del Web. HOLA A TODOS, Me encuentro realizando un formulario de ingreso de productos, con inputs agregados dinamicamente con la siguiente funcion, la cual funciona sin ningun ...
  #1 (permalink)  
Antiguo 07/07/2016, 13:42
 
Fecha de Ingreso: octubre-2012
Mensajes: 74
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Suma de inputs dinamicos

HOLA A TODOS,

Me encuentro realizando un formulario de ingreso de productos, con inputs agregados dinamicamente con la siguiente funcion, la cual funciona sin ningun problema, pero ademas de eso, necesito mostrar en la vista en tiempo real, el resultado entre precio y cantidad de cada producto.
Alguna idea de como realizarlo?

Saludos.

Código:
$(document).ready(function() {
    $("#add").click(function() {
        var intId = $("#buildyourform div").length + 1;
        var fieldWrapper = $("<div class=\"products\" id=\"field" + intId + "\"/>");
        var fName = $("<input type=\"text\" name=\"data[Product]["+ intId +"][nombre]\" class=\"form-control\" placeholder=\"Detalle del producto\" style=\"width:30%;\" />");
        var fType = $("<input type=\"text\" name=\"data[Product]["+ intId +"][cantidad]\" class=\"form-control\" placeholder=\"Cantidad\" style=\"width:20%;\" />");
        var fType2 = $("<input type=\"text\" name=\"data[Product]["+ intId +"][precio]\" class=\"form-control\" placeholder=\"Valor\" style=\"width:20%;\" />");
        var removeButton = $("<input type=\"button\" class=\"btn btn-danger btn-fill\" style=\"width:15%;\" value=\"Eliminar\" />");

        removeButton.click(function() {
            $(this).parent().remove();
        });
        fieldWrapper.append(fName);
        fieldWrapper.append(fType);
        fieldWrapper.append(fType2);
        fieldWrapper.append(removeButton);
        $("#buildyourform").append(fieldWrapper);
    });
    $("#preview").click(function() {
        $("#yourform").remove();
        var fieldSet = $("<fieldset id=\"yourform\"><legend>Your Form</legend></fieldset>");
        $("#buildyourform div").each(function() {
            var id = "input" + $(this).attr("id").replace("field","");
            var label = $("<label for=\"" + id + "\">" + $(this).find("input.fieldname").first().val() + "</label>");
            var input;
            switch ($(this).find("select.fieldtype").first().val()) {
                case "checkbox":
                    input = $("<input type=\"checkbox\" id=\"" + id + "\" name=\"" + id + "\" />");
                    break;
                case "textbox":
                    input = $("<input type=\"text\" id=\"" + id + "\" name=\"" + id + "\" />");
                    break;
                case "textarea":
                    input = $("<textarea id=\"" + id + "\" name=\"" + id + "\" ></textarea>");
                    break;    
            }
            fieldSet.append(label);
            fieldSet.append(input);
        });
        $("body").append(fieldSet);
    });
});
Código HTML:
<div class="products">
                                                <input type="text" name="data[Product][0][nombre]" class="form-control" placeholder="Detalle del producto" style="width:30%;" />
                                                <input type="text" id="cantidad" name="data[Product][0][cantidad]" class="form-control" placeholder="Cantidad" style="width:20%;" />
                                                <input type="text" id="precio" name="data[Product][0][precio]" class="form-control" placeholder="Valor" style="width:20%;" />
                                                <input type="button" value="Agregar" class="btn btn-info btn-fill" id="add" />
</div> 
  #2 (permalink)  
Antiguo 07/07/2016, 14:45
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Suma de inputs dinamicos

Buscas algo como esto?

Código HTML:
Ver original
  1.     <head>
  2.         <script type="text/javascript">
  3.         function add(){
  4.         var elemento1 = document.createElement('input');
  5.         elemento1.type = "text";
  6.         elemento1.setAttribute("name", "precio");
  7.        
  8.         var elemento2 = document.createElement('input');
  9.         elemento2.type = "text";
  10.         elemento2.setAttribute("name", "cantidad");
  11.        
  12.         var elemento3 = document.createElement('br');
  13.        
  14.         var contener = document.getElementById('contener');
  15.        
  16.         contener.appendChild(elemento1);
  17.         contener.appendChild(elemento2);
  18.         contener.appendChild(elemento3);
  19.         }
  20.        
  21.         function suma(){
  22.         var total = 0;
  23.             for(k=0;k<document.getElementsByName("precio").length;k++){
  24.             total += parseInt(document.getElementsByName("precio")[k].value)*parseInt(document.getElementsByName("cantidad")[k].value);
  25.             }
  26.         document.getElementById("total").innerHTML = total;
  27.         }
  28.        
  29.         </script>
  30.     </head>
  31.     <body>
  32.    
  33.     <input type="button" onclick="suma();" value="sumar todo" /> Suma: <span id="total"></span><br/>
  34.    
  35.     <input type="button" value="Agregar +" onclick="add();"/><br/>
  36.     Precio/cantidad
  37.         <div id="contener"></div>  
  38.     </body>
  39. </html>
  #3 (permalink)  
Antiguo 07/07/2016, 14:57
 
Fecha de Ingreso: octubre-2012
Mensajes: 74
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Suma de inputs dinamicos

Exactamente, solo me faltaria ir agregando un indice (el cual ire aumentando, a medida que agrego un nuevo input, al nombre del input, dado que trabajo con un framework, y necesito recorrerlo en el controlador para generar multiples registros en la base de datos.

name="data[Product][$indice][cantidad]"

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Buscas algo como esto?

Código HTML:
Ver original
  1.     <head>
  2.         <script type="text/javascript">
  3.         function add(){
  4.         var elemento1 = document.createElement('input');
  5.         elemento1.type = "text";
  6.         elemento1.setAttribute("name", "precio");
  7.        
  8.         var elemento2 = document.createElement('input');
  9.         elemento2.type = "text";
  10.         elemento2.setAttribute("name", "cantidad");
  11.        
  12.         var elemento3 = document.createElement('br');
  13.        
  14.         var contener = document.getElementById('contener');
  15.        
  16.         contener.appendChild(elemento1);
  17.         contener.appendChild(elemento2);
  18.         contener.appendChild(elemento3);
  19.         }
  20.        
  21.         function suma(){
  22.         var total = 0;
  23.             for(k=0;k<document.getElementsByName("precio").length;k++){
  24.             total += parseInt(document.getElementsByName("precio")[k].value)*parseInt(document.getElementsByName("cantidad")[k].value);
  25.             }
  26.         document.getElementById("total").innerHTML = total;
  27.         }
  28.        
  29.         </script>
  30.     </head>
  31.     <body>
  32.    
  33.     <input type="button" onclick="suma();" value="sumar todo" /> Suma: <span id="total"></span><br/>
  34.    
  35.     <input type="button" value="Agregar +" onclick="add();"/><br/>
  36.     Precio/cantidad
  37.         <div id="contener"></div>  
  38.     </body>
  39. </html>
  #4 (permalink)  
Antiguo 07/07/2016, 19:59
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Suma de inputs dinamicos

Pero ahi está, pudes recorrer todo elemento agregado al dom. En cuanto a la base de datos... ¿Cómo conectarás js a la bd?

Etiquetas: dinamicos, formulario, funcion, input, inputs, javascript, suma, valor
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 12:30.