Ir al contenido


Foto

Calcular importe de un listado dinamico en base a un select


  • Por favor identifícate para responder
1 respuesta en este tema

#1 shinneo

shinneo

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 02 enero 2015 - 06:09

Hola, os cuento lo que tengo.

Tengo un pagina hecha en php con un listado de productos que los coge de la base de datos en la cual  al lado del producto aparece el precio y al lado de este un select para poder seleccionar entre 1 y 10 productos, todo esto funciona perfecto, el problema esta en que quiero que al lado de el select aparecezca el total de lo que cuesta lo que haya seleccionado el cliente, es decir, si el producto vale 100 y el cliente selecciona en el select 3, inmediatamente el campo total deberia actualizarse en 300.
Me gustaria hacerlo en javascript

Este es el codigo php



delphi
  1.     <?php
  2. $trabajoinstan=new Trabajo();
  3.                     $listandoproductos=$trabajoinstan->listaSoloProductosporId($_GET["categoriaxjavascript"]);
  4.                   for ($i = 0; $i < count($listandoproductos); $i++)
  5.                     {
  6.                       ?>
  7.                  
  8.                     <tr class="fuenteParisian fuente20">
  9.                         <td class=" centradovertical"><?php echo ucfirst($listandoproductos[$i]["producto"]);?></td>
  10.                         <td id="precio"><?php echo ucfirst($listandoproductos[$i]["precio"]);?>&nbsp; €</td>
  11.                       <td id="cantidad">
  12.                             <div class="selectcantidad">
  13.                              
  14.                                 <select id="cantidad"  >
  15.                                     <?php
  16.                                         for ($j = 1; $j <= 10; $j++)
  17.                                         {
  18.                                     ?> 
  19.                                     <option value="<?php echo $j; ?>"> <?php echo $j; ?>  </option>
  20.                                     <?php
  21.                                    
  22.                                         }
  23.                                     ?>
  24.                                 </select>
  25.                             </div>
  26.                       </td>
  27.                       <td>
  28.                           <div class="form-group">
  29.                               <input type="checkbox" class="form-control"/>
  30.                           </div>
  31.                       </td>
  32.                      
  33.                      
  34.                       <td>
  35.                           <input type="text" onmouseover="calculaTotal();" />
  36.                       </td>
  37.                      
  38.                   </tr>
  39.                   <?php                 
  40. }
  41.                   ?>




y esta es la funcion javascript que he hecho



delphi
  1. function calculaTotal()
  2. {
  3.   var total;
  4.   var precio;
  5.   var cantidad;
  6.   precio=document.getElementById('precio').value;
  7.   cantidad=document.getElementById('cantidad').value;
  8.   total=precio*cantidad;
  9.   return total;
  10. }


no me funciona, pero pienso que es por que no se integrarla bien, y ademas al tener que coger el valor a multiplicar de un bucle for, pienso que no lo estoy haciendo correctamente, la idea es que al mover el select, el total se incremente.

Si me pudierais echar una mano, me ayudaria bastante

Gracias.

  • 0

#2 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 05 enero 2015 - 05:56

:cool:

Amigo te falta mucho que aprender... hay algo que se llama Traversing, que es la navegacion y ubicación de elemtos a traves del DOM, Jquery es Traversing en DOM y en Objects JSON, dominandolos estas del otro lado.

Este es un ejemplo de lo que quieres hacer:

http://jsfiddle.net/...firio/zcusn0dp/

Ahora veras lineas que te sacaran de onda, en fin

parseInt(), parseFloat() pasan un texto (string) a un número, debes de hacerlo por que si no la operación no se hace

el $(this) es el select, que esta dentro de la celda <td class=".cantidad">  ya que van a existir varias, NO debes utilizar IDS, por eso se utilizan clases.


YA que quedo Claro

$(this) es el select,
.parent() es el contenedor padre, en este caso <td class='.cantidad'>
.prev() es el contenedor hermano anterior, es decir a nivel del padre el anterior, que es solo un <td> (el del precio)
.text() pues es el texto que contiene (en el ejemplo 12.80 y 17)


Ese texto lo pasamos a numero, lo multiplicamos y hacemos la misma operación para buscar la celda donde queremos escribir. Ocupamos toFixed(2) para que el numero sea con 2 decimales nadamas.



Practicalo, estudialo y mucha suerte.

A por cierto.. $('.cantidad').on("change", "select", function(){    se debe leer así:


Dentro de todos los elementos con la clase ".cantidad"
Al ejecutarse el evento "change"
de los elementos tipo "select" dentro del elemento principal
Ejecutar la siguiente función o método
  • 0




IP.Board spam blocked by CleanTalk.