Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Pequeña hoja de pedidos

Estas en el tema de Pequeña hoja de pedidos en el foro de Frameworks JS en Foros del Web. hola amigos estoy realizando una pequeña hoja de pedidos en la que tengo 3 campos por cada elemento que muesto: cantidad, precio, subtotal Dado que ...
  #1 (permalink)  
Antiguo 01/12/2010, 14:06
 
Fecha de Ingreso: abril-2003
Ubicación: Malaga
Mensajes: 176
Antigüedad: 21 años, 7 meses
Puntos: 1
Pequeña hoja de pedidos

hola amigos estoy realizando una pequeña hoja de pedidos en la que tengo 3 campos por cada elemento que muesto: cantidad, precio, subtotal

Dado que saco los elemento por medio de php he hecho que los tres campos sean arrays para despues procesar el pedido en php.

mi problema es que me gustaria actualizar la hoja de pedido con jquery para que en cuanto cambie una de las cantidades pueda actualizarse todo.

el codigo que crea el form es el siguiente:

Código PHP:
      <?php
        $resultado 
$db->resultadoArray("SELECT * FROM productos ORDER BY id");
        foreach (
$resultado as $result){
        
?>
        <tr>
        <td><?php echo '<span class="titulo">'.$result['titulo'].'</span> '.$result['descripcion']?></td>
        <td><input type="text" name="cantidad[]" value="0" class="cantidad"/></td>
        <td><input type="text" name="precio[]" value="<?php echo $result['precio'];?>" class="precio"/>
        <td><input type="text" name="subtotal[]" value="0" class="subtotal"/></td>
        </tr>
        <?php
        
}
        
?>
Ahora he intentado que al hacer el evento on blur de cualquiera de los elementos de la clase cantidad los actualice todos:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. $(function() {
  3. $(".cantidad").blur(function() {
  4. $(".cantidad").each(function() {
  5.      total += //calculo el total;
  6.     subtotal =//calculo el subtotal de esa fila;
  7.     $('').val(subtotal); le añado el valor del subtotal
  8. });
  9. $("#total").val(total);
  10. });
  11. });
  12. </script>

Pero no se despues de mucho intentarlo como acceder a precio[] y subtotal[] en cada iteración.

¿Alguien puede echarme una mano?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 02/12/2010, 06:33
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Pequeña hoja de pedidos

no hace falta volver a calcular los valores de las otras filas, solo la fila donde hubo modificación

Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  4.         <script type="text/javascript">
  5.         $(document).ready(function() {
  6.             $('#pedidos .cantidad').keyup( function (){
  7.                 //Selecciono la fila donde se encuentra el cambio
  8.                 var tr = $(this).closest('tr');
  9.                 //Calculo el subtotal y muestro el valor en el input
  10.                 var sub = $(this).val() * $('.precio', tr).val();
  11.                 $('.subtotal', tr).val(sub);
  12.             });
  13.         });
  14.         </script>
  15.     </head>
  16.     <body>
  17.  
  18.         <table>
  19.             <thead>
  20.                 <tr>
  21.                     <td>Producto</td>
  22.                     <td>Cantidad</td>
  23.                     <td>Precio</td>
  24.                     <td>Subtotal</td>
  25.                 </tr>
  26.             </thead>
  27.             <tbody id="pedidos">
  28.                 <tr>
  29.                     <td><span class="titulo">Producto 1</span></td>
  30.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  31.                     <td><input type="text" name="precio[]" disabled value="5" class="precio"/>
  32.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  33.                 </tr>
  34.                 <tr>
  35.                     <td><span class="titulo">Producto 2</span></td>
  36.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  37.                     <td><input type="text" name="precio[]" disabled value="3" class="precio"/>
  38.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  39.                 </tr>
  40.                 <tr>
  41.                     <td><span class="titulo">Producto 3</span></td>
  42.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  43.                     <td><input type="text" name="precio[]" disabled value="6" class="precio"/>
  44.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  45.                 </tr>
  46.             </tbody>
  47.         </table>
  48.  
  49.     </body>
  50. </html>

$('').val debería ser $(this).val para referirte al elemento que asignaste el evento

Última edición por Dany_s; 02/12/2010 a las 06:39
  #3 (permalink)  
Antiguo 02/12/2010, 11:36
 
Fecha de Ingreso: abril-2003
Ubicación: Malaga
Mensajes: 176
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Pequeña hoja de pedidos

Cita:
Iniciado por Dany_s Ver Mensaje
no hace falta volver a calcular los valores de las otras filas, solo la fila donde hubo modificación

Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  4.         <script type="text/javascript">
  5.         $(document).ready(function() {
  6.             $('#pedidos .cantidad').keyup( function (){
  7.                 //Selecciono la fila donde se encuentra el cambio
  8.                 var tr = $(this).closest('tr');
  9.                 //Calculo el subtotal y muestro el valor en el input
  10.                 var sub = $(this).val() * $('.precio', tr).val();
  11.                 $('.subtotal', tr).val(sub);
  12.             });
  13.         });
  14.         </script>
  15.     </head>
  16.     <body>
  17.  
  18.         <table>
  19.             <thead>
  20.                 <tr>
  21.                     <td>Producto</td>
  22.                     <td>Cantidad</td>
  23.                     <td>Precio</td>
  24.                     <td>Subtotal</td>
  25.                 </tr>
  26.             </thead>
  27.             <tbody id="pedidos">
  28.                 <tr>
  29.                     <td><span class="titulo">Producto 1</span></td>
  30.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  31.                     <td><input type="text" name="precio[]" disabled value="5" class="precio"/>
  32.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  33.                 </tr>
  34.                 <tr>
  35.                     <td><span class="titulo">Producto 2</span></td>
  36.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  37.                     <td><input type="text" name="precio[]" disabled value="3" class="precio"/>
  38.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  39.                 </tr>
  40.                 <tr>
  41.                     <td><span class="titulo">Producto 3</span></td>
  42.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  43.                     <td><input type="text" name="precio[]" disabled value="6" class="precio"/>
  44.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  45.                 </tr>
  46.             </tbody>
  47.         </table>
  48.  
  49.     </body>
  50. </html>

$('').val debería ser $(this).val para referirte al elemento que asignaste el evento

Lo primero muchas gracias por responder. Hacía el bucle porque despues tengo que calcular el total, ¿alguna idea?

Saludos y gracias de nuevo
  #4 (permalink)  
Antiguo 03/12/2010, 06:57
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Pequeña hoja de pedidos

recorre solo los de subtotal

Código HTML:
Ver original
  1.     <head>
  2.         <title>Ejemplo</title>
  3.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  4.         <script type="text/javascript">
  5.         $(document).ready(function() {
  6.             $('#pedidos .cantidad').keyup( function (){
  7.                 //Selecciono la fila donde se encuentra el cambio
  8.                 var tr = $(this).closest('tr');
  9.                 //Calculo el subtotal y muestro el valor en el input
  10.                 var sub = $(this).val() * $('.precio', tr).val();
  11.                 $('.subtotal', tr).val(sub.toFixed(2));
  12.                 var total = 0;
  13.                 $('.subtotal').each( function(){
  14.                     if ($(this).val()!= '')
  15.                         total += parseFloat( $(this).val() );
  16.                 });
  17.                 $('#total').val( total.toFixed(2) );
  18.             });
  19.         });
  20.         </script>
  21.     </head>
  22.     <body>
  23.  
  24.         <table>
  25.             <thead>
  26.                 <tr>
  27.                     <td>Producto</td>
  28.                     <td>Cantidad</td>
  29.                     <td>Precio</td>
  30.                     <td>Subtotal</td>
  31.                 </tr>
  32.             </thead>
  33.             <tbody id="pedidos">
  34.                 <tr>
  35.                     <td><span class="titulo">Producto 3</span></td>
  36.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  37.                     <td><input type="text" name="precio[]" disabled value="5.563" class="precio"/>
  38.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  39.                 </tr>
  40.                 <tr>
  41.                     <td><span class="titulo">Producto 2</span></td>
  42.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  43.                     <td><input type="text" name="precio[]" disabled value="3" class="precio"/>
  44.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  45.                 </tr>
  46.                 <tr>
  47.                     <td><span class="titulo">Producto 3</span></td>
  48.                     <td><input type="text" name="cantidad[]" class="cantidad"/></td>
  49.                     <td><input type="text" name="precio[]" disabled value="6" class="precio"/>
  50.                     <td><input type="text" name="subtotal[]" disabled class="subtotal"/></td>
  51.                 </tr>
  52.             </tbody>
  53.         </table>
  54.         Total: <input type="text" id="total" />
  55.     </body>
  56. </html>

fijate que los decimales te los redondea, si haces 5.563 * 2 = 11.126 pero toFixed con 2 decimales te da 11.13

Etiquetas: hoja, pequeña
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 07:23.