Foros del Web » Programando para Internet » Javascript »

Formulario JS que sume Checkbox y Listas

Estas en el tema de Formulario JS que sume Checkbox y Listas en el foro de Javascript en Foros del Web. Hola compañeros, Estoy tratando de hacer un pequeño formulario con el cual sumar las distintas opciones elegidas pero me encuentro con una duda que no ...
  #1 (permalink)  
Antiguo 11/06/2011, 12:09
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Información Formulario JS que sume Checkbox y Listas

Hola compañeros,

Estoy tratando de hacer un pequeño formulario con el cual sumar las distintas opciones elegidas pero me encuentro con una duda que no consigo resolver por mi mismo.

Utilizando el buscador del foro encontré este código, actualmente suma automáticamente los checkbox del formulario y los muestra al final.

Por mi parte, he insertado una Lista con otros valores que también me gustaría que fueran sumados cuando el usuario eligiera una de las distintas opciones.

Mi problema es ese, que no consigo entender que código javascript he de añadir para que ahora también sume la opción elegida en el List

Aquí el código de ejemplo que he ido sacando de aquí y de allá.

Código HTML:
<html> 
<head> 
<script type="text/javascript"> 
function Suma(isChecked, valor){ 
    if (isChecked) { 
        siniva2 = (parseFloat(document.sumar2.totalsiniva2.value) + parseFloat(valor)).toFixed(2); 
    } else { 
        siniva2 = (parseFloat(document.sumar2.totalsiniva2.value) - parseFloat(valor)).toFixed(2); 
}
document.sumar2.totalsiniva2.value = siniva2; 
document.sumar2.total2.value =  siniva2;
} 
</script> 
</head> 
<body> 
<table border="1"> 
<tr> 
<td> 
<form name="sumar2" method="POST"> 
<label for="FOR">Pack</label>
<select name="NAME" id="ID">
<option selected>Selecciona un Pack</option>
<option value="10.00">Pack Uno</option>
<option value="20.00">Pack Dos</option>
</select>
<p>Super Pack U <input type="checkbox" value="1.00" id="Prod2" name="Prod2" onClick="Suma(this.checked,this.value)" />1.00 &euro;</p> 
<p>Super Pack D <input type="checkbox" value="2.00" id="Prod3" name="Prod3" onClick="Suma(this.checked,this.value)" />2.00 &euro;</p> 
<p>Super Pack T <input type="checkbox" value="3.00" id="Prod4" name="Prod4" onClick="Suma(this.checked,this.value)" />3.00 &euro;</p> 
<p>Super Pack C <input type="checkbox" value="4.00" id="Prod5" name="Prod5" onClick="Suma(this.checked,this.value)" />4.00 &euro;</p>
<p>Super Pack C <input type="checkbox" value="5.00" id="Prod6" name="Prod6" onClick="Suma(this.checked,this.value)" />5.00 &euro;</p>
<input type="hidden" value="0.00" id="totalsiniva2" name="totalsiniva2" />     
<p><b><font color="#999999">Total </font></b> <input id="pago" type="text" id="total2" name="total2" value="0" disabled /> &euro;</p> 
</form> 
</td> 
</tr> 
</table> 
</body> 
</html> 
Gracias!
  #2 (permalink)  
Antiguo 11/06/2011, 12:12
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Formulario JS que sume Checkbox y Listas

No me queda claro... qué exactamente hay que sumar? Yo veo que funciona bien.

Hay un combo que dice "pack uno y pack dos". ¿A eso te referís? ¿Cómo querés sumar eso?
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 11/06/2011, 12:15
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Formulario JS que sume Checkbox y Listas

Ah, perdón. Creo haber entendido. Si es como yo pienso, lo que tenés que hacer es al <select> agregarle el siguiente atributo onchange:

Código Javascript:
Ver original
  1. onchange="Suma(true,this.value)"

-edit-

Eso es parte de la solución, porque me di cuenta que si hacés sucesivos cambios en el combo la suma se va acumulando, no modificando.
__________________
nahueljose.com.ar
  #4 (permalink)  
Antiguo 11/06/2011, 12:46
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario JS que sume Checkbox y Listas

Gracias Naahuel, es exactamente lo que me faltaba para que funcione como deseo.

  #5 (permalink)  
Antiguo 11/06/2011, 13:06
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario JS que sume Checkbox y Listas

Hola otra vez Naahuel,

Ahora tengo otro problemilla, si marco / desmarco los checkbox la cantidad se suma o se resta correctamente, al elegir una opción de la lista también lo suma pero si la cambio por otra la vuelve a sumar sobre la anterior, en ningún caso resta.

Cómo podría evitar que si me muevo varias veces por la lista no haga solo suma sino actualice el valor según lo elegido.

Muchas gracias otra vez.
  #6 (permalink)  
Antiguo 11/06/2011, 14:03
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Formulario JS que sume Checkbox y Listas

Cita:
Iniciado por Comercial Ver Mensaje
Hola otra vez Naahuel,

Ahora tengo otro problemilla, si marco / desmarco los checkbox la cantidad se suma o se resta correctamente, al elegir una opción de la lista también lo suma pero si la cambio por otra la vuelve a sumar sobre la anterior, en ningún caso resta.

Cómo podría evitar que si me muevo varias veces por la lista no haga solo suma sino actualice el valor según lo elegido.

Muchas gracias otra vez.
Eso es lo que te había dicho en el mensaje anterior (en el edit).

Podés hacer otra funcion para el select, almacenando los valores anteriores en una variable auxiliar. Algo así:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2.   <head>
  3.     <script type="text/javascript">
  4.     function Suma(isChecked, valor){
  5.         if (isChecked) {
  6.             siniva2 = (parseFloat(document.sumar2.totalsiniva2.value) + parseFloat(valor)).toFixed(2);
  7.         } else {
  8.             siniva2 = (parseFloat(document.sumar2.totalsiniva2.value) - parseFloat(valor)).toFixed(2);
  9.         }
  10.         document.sumar2.totalsiniva2.value = siniva2;
  11.         document.sumar2.total2.value =  siniva2;
  12.     }
  13.     //almaceno el valor original en una variable para saber qué tenía antes.
  14.     var valor_viejo = 0;
  15.     function SumaSelect(valor){
  16.         siniva2 = (parseFloat(document.sumar2.totalsiniva2.value) + parseFloat(valor) - valor_viejo).toFixed(2);
  17.         document.sumar2.totalsiniva2.value = siniva2;
  18.         document.sumar2.total2.value =  siniva2;
  19.         valor_viejo = valor;
  20.     }  
  21.     </script>
  22.   </head>
  23.   <body>
  24.     <table border="1">
  25.       <tr>
  26.         <td>
  27.           <form name="sumar2" method="post" id="sumar2">
  28.             <label for="FOR">Pack</label> <select name="NAME" id="ID" onchange="SumaSelect(this.value)">
  29.               <option selected="selected" value="0">
  30.                 Selecciona un Pack
  31.               </option>
  32.               <option value="10.00">
  33.                 Pack Uno
  34.               </option>
  35.               <option value="20.00">
  36.                 Pack Dos
  37.               </option>
  38.             </select>
  39.             <p>
  40.               Super Pack U <input type="checkbox" value="1.00" id="Prod2" name="Prod2" onclick="Suma(this.checked,this.value)">1.00 ¬
  41.             </p>
  42.             <p>
  43.               Super Pack D <input type="checkbox" value="2.00" id="Prod3" name="Prod3" onclick="Suma(this.checked,this.value)">2.00 ¬
  44.             </p>
  45.             <p>
  46.               Super Pack T <input type="checkbox" value="3.00" id="Prod4" name="Prod4" onclick="Suma(this.checked,this.value)">3.00 ¬
  47.             </p>
  48.             <p>
  49.               Super Pack C <input type="checkbox" value="4.00" id="Prod5" name="Prod5" onclick="Suma(this.checked,this.value)">4.00 ¬
  50.             </p>
  51.             <p>
  52.               Super Pack C <input type="checkbox" value="5.00" id="Prod6" name="Prod6" onclick="Suma(this.checked,this.value)">5.00 ¬
  53.             </p><input type="hidden" value="0.00" id="totalsiniva2" name="totalsiniva2">
  54.             <p>
  55.               <b><font color="#999999">Total</font></b> <input type="text" id="total2" name="total2" value="0" disabled> ¬
  56.             </p>
  57.           </form>
  58.         </td>
  59.       </tr>
  60.     </table>
  61.   </body>
  62. </html>
__________________
nahueljose.com.ar
  #7 (permalink)  
Antiguo 12/06/2011, 15:44
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Respuesta: Formulario JS que sume Checkbox y Listas

Hola Naahuel,

Muchas gracias por todo, con tu ayuda he logrado hacer lo que necesitaba pero ahora me encuentro con un problemita.

He añadito un botón RESET al formulario pero si marco los checkbox y reseteo, al volver a hacer click en un checkbox pues aun tiene guardado el valor anterior y lo suma con lo nuevo que he marcado.

¿Cómo podría hacer para que al hacer click en reset pues elimine toda la información del formulario?.

El código es el mismo que publicaste por último y he añadido el boton de borrar

Código HTML:
<button role="button" type="reset" onclick="document.signupForm.reset()"><span class="ui-button-text">BORRAR</span></button> 

Etiquetas: js, formulario
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 17:48.