Foros del Web » Programando para Internet » Javascript »

Sumar un total con checkbox y radio

Estas en el tema de Sumar un total con checkbox y radio en el foro de Javascript en Foros del Web. Hola, estoy haciendo una web y después de mirar por el buscador del foro y por Google no he conseguido encontrar nada que me sirva. ...
  #1 (permalink)  
Antiguo 03/03/2011, 06:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Sumar un total con checkbox y radio

Hola, estoy haciendo una web y después de mirar por el buscador del foro y por Google no he conseguido encontrar nada que me sirva.

Lo que quiero hacer es un configurador de precios en el que puedas seleccionar varias opciones y se van sumando o restando si lo deseleccionas. Esto con checkbox lo he conseguido hacer, pero no con radio ya que se quedan seleccionados y no se pueden deseleccionar.


Código:
<script>
function Suma(isChecked, myValue)
{
	tot = parseInt(document.form1.total.value);
	myValue = parseInt(myValue);
	if (isChecked) document.form1.total.value = tot + myValue;
	else document.form1.total.value = tot - myValue;
}
</script>
<form method="post" name="form1">
	<p>
		Motor</p>
	<p>
		&nbsp;&nbsp; &nbsp; Motor 1<input name="checkbox" onclick="Suma(this.checked,this.value)" type="radio" value="100" /></p>
	<p>
		&nbsp;&nbsp; &nbsp; Motor 2<input name="checkbox2" onclick="Suma(this.checked,this.value)" type="radio" value="50" /></p>
	<p>
		<strong>Extra</strong></p>
	<p>
		&nbsp;&nbsp; &nbsp;Extra 1<input name="checkbox2" onclick="Suma(this.checked,this.value)" type="checkbox" value="500" /></p>
	<p>
		&nbsp;</p>
	<p>
		Total<input name="total" type="text" value="0" /></p>
</form>
Básicamente es eso pero con la opción de que el radio de pueda deseleccionar y al tiempo se reste tu valor en el total.

Gracias.
  #2 (permalink)  
Antiguo 03/03/2011, 08:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Sumar un total con checkbox y radio

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. var radio_1=false;
  5. var radio_2=false;
  6.  
  7. function CheckunCheck(obj){
  8. var checked=false;
  9. switch (obj.id){
  10. case "radio_1":
  11.     radio_1=!radio_1;
  12.     checked=radio_1;
  13. break;
  14. case "radio_2":
  15.     radio_2=!radio_2;
  16.     checked=radio_2;
  17. break;
  18. }
  19. obj.checked=checked;
  20. }
  21. function Suma(isChecked, myValue)
  22. {
  23.     tot = parseInt(document.form1.total.value);
  24.     myValue = parseInt(myValue);
  25.     if (isChecked.checked) document.form1.total.value = tot + myValue;
  26.     else document.form1.total.value = tot - myValue;
  27. }
  28. </head>
  29.  
  30. <form method="post" name="form1">
  31.     <p>
  32.         Motor</p>
  33.     <p>
  34.         &nbsp;&nbsp; &nbsp; Motor 1<input name="radio_1" id="radio_1" onclick="CheckunCheck(this);Suma(this,this.value)" type="radio" value="100" /></p>
  35.     <p>
  36.         &nbsp;&nbsp; &nbsp; Motor 2<input name="radio_2" id="radio_2" onclick="CheckunCheck(this);Suma(this,this.value)" type="radio" value="50" /></p>
  37.     <p>
  38.         <strong>Extra</strong></p>
  39.     <p>
  40.         &nbsp;&nbsp; &nbsp;Extra 1<input name="chec_1" id="chec_1" onclick="Suma(this,this.value)" type="checkbox" value="500" /></p>
  41.     <p>
  42.         &nbsp;</p>
  43.     <p>
  44.         Total<input name="total" type="text" value="0" /></p>
  45. </form>
  46. </body>
  47. </html>

Ahi lo tienes, pero vaya perdida de tiempo pudiendo lo hacer con checkbox.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 03/03/2011, 08:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sumar un total con checkbox y radio

Muchas gracias quimfv entiendo que digas que es una perdida de tiempo, porque no me explique bien, lo siento.

El motivo por el cual dije de usar el radio era para que solo se pudiera seleccionar uno de los dos. No como el checkbox que se pueden seleccionar varios a la vez. Espero que no sea mucha molestia cambiar eso, es que de javascript ando bastante pegado
  #4 (permalink)  
Antiguo 04/03/2011, 06:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Sumar un total con checkbox y radio

¿Alguien me puede ayudar por favor?
  #5 (permalink)  
Antiguo 04/03/2011, 07:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Sumar un total con checkbox y radio

Entendido el porque.

Pero así tienes otro problema en el total no sabes que se ha sumado y que no por lo tanto no puedes restar sin mas el valor contrario del grupo de radios...

Imagina que tienes 2 grupos de radios de tres elementos y un checkbox como los que siguen


Radio11 value 100
Radio12 value 150
Radio13 value 200

Radio21 value 100
Radio22 value 150
Radio23 value 200

Checkbox value 100

Total Value 200


Al hacer un cambio debes recorrer todos los posibles valores para poder determinar que sumas y que restas puesto que no sabes que tenias marcado antes.... es decir obtener de nuevo el total des de cero no restando el valor anterior puesto que no sabes qual era... el grupo uno de radios podia ser 0, 100 o 200 teniendo en cuenta que tenemos 200 en el total...

No digo que no se puede hacer pero cambiará en función del numero de grupos que tengas de las opciones de estos etc...

El objeto formulario te puede ayudar, si puedes discriminar que objetos son costes y que no...

Ahí va...
Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. function Suma(formulario){
  5. total=0;
  6. nombre="";
  7. for(i=0;i<formulario.elements.length;i++){
  8.     if(formulario.elements[i].type=="radio" && nombre!=formulario.elements[i].name){
  9.         nombre=formulario.elements[i].name;
  10.         grupo=document.getElementsByName(nombre);
  11.         for(j=0;j<grupo.length;j++){
  12.             if(grupo[j].checked){
  13.                 total+=parseInt(grupo[j].value);
  14.             }
  15.         }
  16.     }else if (formulario.elements[i].type=="checkbox"){
  17.         if(formulario.elements[i].checked){
  18.                 total+=parseInt(formulario.elements[i].value);
  19.         }
  20.     }
  21. }
  22.    document.form1.total.value = total;
  23. }
  24. </head>
  25.  
  26. <form method="post" name="form1">
  27.     <p>
  28.         Motor</p>
  29.     <p>
  30.         &nbsp;&nbsp; &nbsp; Motor 1<input name="grupo_radio" id="radio_1" onclick="Suma(this.form)" type="radio" value="100" /></p>
  31.     <p>
  32.         &nbsp;&nbsp; &nbsp; Motor 2<input name="grupo_radio" id="radio_2" onclick="Suma(this.form)" type="radio" value="50" /></p>
  33.     <p>
  34.         Motor2</p>
  35.     <p>
  36.         &nbsp;&nbsp; &nbsp; Motor 1<input name="grupo_radio2" id="radio_3" onclick="Suma(this.form)" type="radio" value="300" /></p>
  37.     <p>
  38.         &nbsp;&nbsp; &nbsp; Motor 2<input name="grupo_radio2" id="radio_4" onclick="Suma(this.form)" type="radio" value="25" /></p>
  39.     <p>
  40.         <strong>Extra</strong></p>
  41.     <p>
  42.         &nbsp;&nbsp; &nbsp;Extra 1<input name="chec_1" id="chec_1" onclick="Suma(this.form)" type="checkbox" value="500" /></p>
  43.     <p>
  44.         &nbsp;</p>
  45.     <p>
  46.         Total<input name="total" type="text" value="0" /></p>
  47. </form>
  48. </body>
  49. </html>

Solo suma radios y cheks... pero creo que puede servir para cualquier formulario con independencia del numero de grupos de radios y cheks....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/03/2011 a las 07:29

Etiquetas: checkbox, radio, resta, suma, totales
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 21:34.