Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/03/2011, 07:06
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
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