Foros del Web » Programando para Internet » Javascript »

Suma de valores de una lista de seleccion

Estas en el tema de Suma de valores de una lista de seleccion en el foro de Javascript en Foros del Web. Hola buenas chicos!!! Espero que me podáis ayudar en esto, Es que tengo un formulario que sirve para calcular un presupuesto al seleccionar un servicio ...
  #1 (permalink)  
Antiguo 13/07/2011, 03:14
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Suma de valores de una lista de seleccion

Hola buenas chicos!!!

Espero que me podáis ayudar en esto, Es que tengo un formulario que sirve para calcular un presupuesto al seleccionar un servicio y calcule el presupuesto. Pero el problema esta es que cuando hago varias selección de un mismo servicio...no me funciona y no me hace el calculo pero si hago una selección de cada servicio si que me funciona y lo que me interesa es que funciones también cuando selecciones varios servicios.

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/javascript">
  2. var called=false;   //para asegurarse de que la función calcular () se llama
  3. var T_Price=0;
  4. var pc_flag;    //pcsobremesa bandera para hacer el seguimiento de las elecciones
  5. var pc_print="";
  6. var re_flag;    //bandera para redes
  7. var re_print;
  8. var po_flag;    //bandera para portatiles
  9. var po_print;
  10. var rep_flag;   //bandera para reparación
  11. var rep_print;
  12. var mac_flag;   //bandera para MAC
  13. var mac_print;
  14. var software_flag; //bandera para software
  15. var software_print;
  16.  
  17. function compute(form){
  18. called=true;
  19. if (form.pcsobremesa[0].selectedmultiple){
  20.     pc_print= "None [0€]";
  21.     pc_flag=0;
  22. }
  23.       if (form.pcsobremesa[1].selectedmultiple){
  24.     pc_flag =00;
  25.     pc_print="PC-01 Diagnostico y presupuesto [00€]";
  26. }
  27. else if (form.pcsobremesa[2].selectedmultiple){
  28.     pc_flag =15;
  29.     pc_print="PC-02 Formatear Disco Duro[15€]";
  30.  
  31. }
  32.     else if (form.pcsobremesa[3].selectedmultiple){
  33.     pc_flag =45;
  34.     pc_print="PC-03 Instalación de Sistema Operativo[45€]";
  35. }
  36.     else if (form.pcsobremesa[4].selectedmultiple){
  37.     pc_flag =20;
  38.     pc_print="PC-04 Limpieza de Virus[20€]";
  39. }
  40.    else if (form.pcsobremesa[5].selectedmultiple){
  41.        pc_flag =15;
  42.        pc_print="PC-05 Intalación antivirus[15€]";
  43.           }
  44.    else if (form.pcsobremesa[6].selectedmultiple){
  45.        pc_flag =30;
  46.        pc_print="PC-06 Limpieza PC[30€]";
  47.    }
  48.    else if (form.pcsobremesa[7].selectedmultiple){
  49.        pc_flag =15;
  50.        pc_print="PC-07 Recuperación del sistema[15€]";
  51.    }
  52.    else if (form.pcsobremesa[8].selectedmultiple){
  53.        pc_flag =10;
  54.        pc_print="PC-08 Pendrive[10€]";
  55.    }
  56.    else if (form.pcsobremesa[9].selectedmultiple){
  57.        pc_flag =20;
  58.        pc_print="PC-09 Recuperación de datos[20€]";
  59.    }
  60.    else if (form.pcsobremesa[10].selectedmultiple){
  61.        pc_flag =30;
  62.        pc_print="PC-10 Disco duro dañado [30€]";
  63.    }
  64.    else if (form.pcsobremesa[11].selectedmultiple){
  65.        pc_flag =20;
  66.        pc_print="PC-11 Instalación Hardware[20€]";
  67.    }
  68.    else if (form.pcsobremesa[12].selectedmultiple){
  69.        pc_flag =10;
  70.        pc_print="PC-12 Asesoramiento[10€]";
  71.    }
  72.    else if (form.pcsobremesa[13].selectedmultiple){
  73.        pc_flag =30;
  74.        pc_print="PC-13 Copia de Seguridad[30€]";
  75.    }
  76.    else if (form.pcsobremesa[14].selectedmultiple){
  77.        pc_flag =10;
  78.        pc_print="PC-14 DVD-CD dañado[10€]";
  79.    }
  80.    else if (form.pcsobremesa[15].selectedmultiple){
  81.        pc_flag =20;
  82.        pc_print="PC-15 Correo electrónico[20€]";
  83.    }
  84.    else if (form.pcsobremesa[16].selectedmultiple){
  85.        pc_flag =15;
  86.        pc_print="PC-16 Instalación periféricos[15€]";
  87.    }
  88.    
  89.    else if (form.pcsobremesa[17].selectedmultiple){
  90.        pc_flag =20;
  91.        pc_print="PC-17 Software descarga[20€]";
  92.    }
  93.    else if (form.pcsobremesa[18].selectedmultiple){
  94.        pc_flag =20;
  95.        pc_print="PC-18 Instalación Messenger, Skype, facebook, etc[20€]";
  96.    }
  97.    else if (form.pcsobremesa[19].selectedmultiple){
  98.        pc_flag =20;
  99.        pc_print="PC-19 Fuente de Alimentación[20€]";
  100.    }
  101.    else if (form.pcsobremesa[20].selectedmultiple){
  102.        pc_flag =35;
  103.        pc_print="PC-20 Montaje e instalación de Ordenador[35€]";
  104.    }
  105.    else if (form.pcsobremesa[21].selectedmultiple){
  106.        pc_flag =30;
  107.        pc_print="PC-21 Ampliación PC[30€]";
  108.    }
  109.    else if (form.pcsobremesa[22].selectedmultiple){
  110.        pc_flag =25;
  111.        pc_print="PC-22 Kit de refrigeración[25€]";
  112.    }
  113.    else if (form.pcsobremesa[23].selectedmultiple){
  114.        pc_flag =15;
  115.        pc_print="PC-23 Instalación software[15€]";
  116.    }
  117.    
  118. //-------redes----------
  119.  
  120. if (form.redes[0].selectedmultiple){
  121.     re_flag=0;
  122.     re_print="None [€0]";
  123. }
  124. if (form.redes[1].selectedmultiple){
  125.     re_flag=20;
  126.     re_print="RE-01 Instalación y configuración de ADSL/WIFI[20€]";
  127. }
  128. if (form.redes[2].selectedmultiple){
  129.     re_flag=25;
  130.     re_print="RE-02 Configuración Router[25€]";
  131. }
  132. if (form.redes[3].selectedmultiple){
  133.     re_flag=35;
  134.     re_print="RE-03 Seguridad WIFI [35€]";
  135.  
  136. }
  137. if (form.redes[4].selectedmultiple){
  138.     re_flag=35;
  139.     re_print="RE-04 Instalación de componentes de red [35€]";
  140.  
  141. }
  142. if (form.redes[5].selectedmultiple){
  143.     re_flag=15;
  144.     re_print="RE-05 Configuración e instalación de red domestica[15€]";
  145.  
  146. }
  147. if (form.redes[6].selectedmultiple){
  148.     re_flag=50;
  149.     re_print="RE-06 Ampliación de cobertura WIFI[50€]";
  150.  
  151. }
  152. if (form.redes[7].selectedmultiple){
  153.     re_flag=20;
  154.     re_print="RE-07 Adaptador o tarjeta WIFI[20€]";
  155.  
  156. }
  157. //-------portatiles-----------
  158.  
  159. if (form.portatiles[0].selectedmultiple){
  160.     po_flag=0;
  161.     po_print="None [€0]";
  162. }
  163. if (form.portatiles[1].selectedmultiple){
  164.     po_flag=00;
  165.     po_print="PO-01 Diagnostico y presupuesto[00€]";
  166. }
  167. if (form.portatiles[2].selectedmultiple){
  168.     po_flag=100;
  169.     po_print="PO-02Reparación Pantalla[100€]";
  170. }
  171. if (form.portatiles[3].selectedmultiple){
  172.     po_flag=45;
  173.     po_print="PO-03 Reparación o sustitución de batería[45€]";
  174. }
  175. if (form.portatiles[4].selectedmultiple){
  176.     po_flag=57;
  177.     po_print="PO-04 Reparación o sustitución de teclado[57€]";
  178. }
  179. if (form.portatiles[5].selectedmultiple){
  180.     po_flag=30;
  181.     po_print="PO-05 Reparación o sustitución DVD[30€]";
  182. }
  183. if (form.portatiles[6].selectedmultiple){
  184.     po_flag=90;
  185.     po_print="PO-06 Reparación Placa Base[90€]";
  186. }
  187. if (form.portatiles[7].selectedmultiple){
  188.     po_flag=56;
  189.     po_print="PO-07 Reparación Disco Duro[56€]";
  190. }
  191. if (form.portatiles[8].selectedmultiple){
  192.     po_flag=55;
  193.     po_print="PO-08 Formatear y reinstalar Sistema Operativo[55€]";
  194. }
  195. if (form.portatiles[9].selectedmultiple){
  196.     po_flag=25;
  197.     po_print="PO-09 Ampliación Memoria[25€]";
  198. }
  199. if (form.portatiles[10].selectedmultiple){
  200.     po_flag=20;
  201.     po_print="PO-10 Limpieza virus[20€]";
  202. }
  203. if (form.portatiles[11].selectedmultiple){
  204.     po_flag=55;
  205.     po_print="PO-11 Ampliación de Disco Duro[55€]";
  206. }
  207. if (form.portatiles[12].selectedmultiple){
  208.     po_flag=30;
  209.     po_print="PO-12 Limpieza Portátil[30€]";
  210. }
  211. if (form.portatiles[13].selectedmultiple){
  212.     po_flag=35;
  213.     po_print="PO-13 Ventilador Portátil[35€]";
  214. }
  215. if (form.portatiles[14].selectedmultiple){
  216.     po_flag=70;
  217.     po_print="PO-14 Reparación GPU Video[70€]";
  218. }
  219. if (form.portatiles[15].selectedmultiple){
  220.     po_flag=15;
  221.     po_print="PO-15 Instalación software[15€]";
  222. }
  223.  
  224. //-------reparación-------
  225.  
  226. if (form.reparación[0].selectedmultiple){
  227.     rep_flag=0;
  228.     rep_print="None [0€]";
  229. }
  230. if (form.reparación[1].selectedmultiple){
  231.     rep_flag=00;
  232.     rep_print="ZONA-1 Madrid Centro Hasta 20Km [00€]";
  233. }
  234. if (form.reparación[2].selectedmultiple){
  235.     rep_flag=15;
  236.     rep_print="ZONA-2 Extrarradio hasta 20 Km[15€]";
  237. }
  238. if (form.reparación[3].selectedmultiple){
  239.     rep_flag=20;
  240.     rep_print="ZONA-3 Extrarradio hasta 30Km[20€]";
  241. }
  242. if (form.reparación[4].selectedmultiple){
  243.     rep_flag=30;
  244.     rep_print="ZONA-4 Provincias colindantes hasta 50 Km[30€]";
  245. }
  246. //-------MAC-------
  247. if (form.MAC[0].selectedmultiple){
  248.     mac_flag=0;
  249.     mac_print="None [€0]";
  250.     }
  251. if (form.MAC[1].selectedmultiple){
  252.     mac_flag=00;
  253.     mac_print="MA-01 Diagnostico y presupuesto[00€]";
  254.     }
  255. if (form.MAC[2].selectedmultiple){
  256.     mac_flag=45;
  257.     mac_print="MA-02 Instalación de Sistema Operativo[45€]";
  258.     }
  259. if (form.MAC[3].selectedmultiple){
  260.     mac_flag=15;
  261.     mac_print="MA-03 Instalación software[15€]";
  262.     }
  263. if (form.MAC[4].selectedmultiple){
  264.     mac_flag=30;
  265.     mac_print="MA-04 Copia de Seguridad[30€]";
  266.     }
  267. if (form.MAC[5].selectedmultiple){
  268.     mac_flag=30;
  269.     mac_print="MA-05 Instalación Windows[30€]";
  270.     }
  271. if (form.MAC[6].selectedmultiple){
  272.     mac_flag=20;
  273.     mac_print="MA-06 Reemplazo de piezas defectuosas[20€]";
  274.     }
  275. if (form.MAC[7].selectedmultiple){
  276.     mac_flag=10;
  277.     mac_print="MA-07 Asesoramiento[10€]";
  278.     }          
  279.  
  280. T_Price=pc_flag+re_flag+po_flag+rep_flag+mac_flag
  281. form.T_Price.value="     € "+ T_Price;
  282. }
  283.  
  284. function print(form){
  285.  
  286. if(!called){
  287.  
  288.     compute(form);
  289.  
  290. }
  291. text = ("<HEAD><TITLE>'On-line Calcular presupuesto'</TITLE></HEAD>");
  292.  
  293. text = (text +"<BODY BGCOLOR =  '#C0C0C0' ><CENTER><B><FONT SIZE = 4><FONT COLOR=BLUE>Novtiz<br>servicio informatico</FONT></FONT></B>");
  294.  
  295. text= (text +"</CENTER>");
  296.  
  297. text=(text+"<hr>");
  298. text=(text+"<TABLE BORDER =0><TR VALIGN=Top><TD VALIGN=Top>");
  299.  
  300. text=(text+"<B><BR><BR><BR> <BR><BR>");
  301.  
  302. text=(text+" <BR><BR><BR><BR><BR><BR>");
  303.  
  304. text=(text+"</B></TD><TD>")
  305. text=(text+"<B>"+ pc_print+"<BR>"+re_print+"<BR>"+ rep_print+"<BR>");
  306.  
  307. text=(text+"<BR>"+po_print+"<BR>"+ mac_print+"<BR>");
  308.  
  309.  
  310.  
  311. text=(text+"<TD></TR></TABLE><hr>");
  312.  
  313. text=(text+"<B><FONT COLOR=RED>Coste total:</FONT>"+" &nbsp &nbsp &nbsp €&nbsp;"+T_Price);
  314.  
  315. text=(text+"<form><FONT SIZE=-1><FONT COLOR=GREEN>Para imprimir, seleccione Archivo e Imprimir.</FONT></FONT>");
  316. text=(text+"<br><form><FONT SIZE=-1><FONT COLOR=RED>Este presupuesto no incluye gastos de materiales.</FONT></FONT></br>");
  317.  
  318. text=(text+"&nbsp;&nbsp;&nbsp;<input type=button value=Close onClick=window.close()>"+"</form></body></html>");
  319.  
  320.                 msgWindow=window.open("","displayWindow","toolbar=no,location=no,top=8,left=90,width=375,height=400,directories=no,status=no,scrollbars=no,resize=no,menubar=yes")
  321.  
  322.                 msgWindow.document.write(text)
  323.  
  324.                 msgWindow.document.close()
  325.  
  326. }
  327. </script>
  #2 (permalink)  
Antiguo 13/07/2011, 03:15
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Respuesta: Suma de valores de una lista de seleccion

Formulario

Código HTML:
Ver original
  1. <h2 class="h2">Aquí puedes calcular tu presupuesto</h2>
  2. <font color="blue">
  3. <form method="post">
  4.   <table width="883" height="169" border="0" cellpadding="0">
  5.     <caption></caption>
  6.     <tr bgcolor="#333333">
  7.       <td height="48" class="caja1">&nbsp;</td>
  8.       <td class="caja1">PC Sobremesa:<br />
  9.  
  10.       <select name="pcsobremesa" size="10" multiple="multiple">
  11.       <option selected="selected">Seleccionar</option>
  12.       <option>PC-01 Diagnostico y presupuesto[GRATIS]</option>
  13.       <option>PC-02 Formatear Disco Duro[15]</option>
  14.       <option>PC-03 Instalación de Sistema Operativo[45]</option>
  15.       <option>PC-04 Limpieza de Virus[20]</option>
  16.       <option>PC-05 Instalación antivirus[15]</option>
  17.       <option>PC-06 Limpieza PC[30]</option>
  18.       <option>PC-07 Recuperación del sistema[15]</option>
  19.       <option>PC-08 Pendrive[10]</option>
  20.       <option>PC-09 Recuperación Datos[20]</option>
  21.       <option>PC-10 Disco duro dañado[30]</option>
  22.       <option>PC-11 Instalación Hardware[20]</option>
  23.       <option>PC-12 Asesoramiento[10]</option>
  24.       <option>PC-13 Copia de Seguridad[30]</option>
  25.       <option>PC-14 DVD-CD dañado[10]</option>
  26.       <option>PC-15 Correo electrónico[20]</option>
  27.       <option>PC-16 Instalación periféricos[15]</option>
  28.       <option>PC-17 Software descarga[20]</option>
  29.       <option>PC-18 Instalación Messenger, Skype, facebook, etc.[20]</option>
  30.       <option>PC-19 Fuente de Alimentación.[20]</option>
  31.       <option>PC-20 Montaje e instalación de Ordenador.[35]</option>
  32.       <option>PC-21 Ampliación PC[30]</option>
  33.       <option>PC-22 Kit de refrigeración[25]</option>
  34.       <option>PC-23 Instalación software[15]</option>
  35.       </select> </td>
  36.       <td class="caja1">Internet/Redes/Wifi: <br />
  37.         <select name="redes" size="10" multiple="multiple">
  38.           <option selected="selected">Seleccionar</option>
  39.           <option>RE-01 Instalación y configuración de ADSL/WIFI[20]</option>
  40.           <option>RE-02 REConfiguración Router[25]</option>
  41.           <option>RE-03 Seguridad WIFI [35]</option>
  42.           <option>RE-04 Instalación de componentes de red [35]</option>
  43.           <option>RE-05 Configuración e instalación de red domestica[15]</option>
  44.           <option>RE-06 Ampliación de cobertura WIFI[50]</option>
  45.           <option>RE-07 Adaptador o tarjeta WIFI[20]</option>
  46.         </select> </td>
  47.       <td>&nbsp;</td>
  48.     </tr>
  49.     <tr bgcolor="#999999">
  50.       <td height="45" class="caja1">&nbsp;</td>
  51.       <td class="caja1">Reparación TFT / LCD (Solo Recogida) Consultar tarifas: <br />
  52.       <select name="reparación" size="10" multiple="multiple">
  53.       <option selected="selected">Seleccionar</option>
  54.       <option>ZONA-1 Madrid Centro Hasta 20Km [00]</option>
  55.       <option>ZONA-2 Extrarradio hasta 20 Km[15]</option>
  56.       <option>ZONA-3 Extrarradio hasta 30Km[20]</option>
  57.       <option>ZONA-4 Provincias colindantes hasta 50 Km[30]</option>
  58.       </select> </td>
  59.       <td class="caja1">MAC:<br />
  60.         <select name="MAC" size="10" multiple="multiple">
  61.           <option selected="selected">Seleccionar</option>
  62.           <option>MA-01 Diagnostico y presupuesto[00]</option>
  63.           <option>MA-02 Instalación de Sistema Operativo[45]</option>
  64.           <option>MA-03 Instalación software[15]</option>
  65.           <option>MA-04 Copia de Seguridad[30]</option>
  66.           <option>MA-05 Instalación Windows[30]</option>
  67.           <option>MA-06 Reemplazo de piezas defectuosas[20]</option>
  68.           <option>MA-07 Asesoramiento[10]</option>
  69.         </select> </td>
  70.       <td>&nbsp;</td>
  71.     </tr>
  72.     <tr bgcolor="#333333">
  73.       <td height="53" class="caja1">&nbsp;</td>
  74.       <td class="caja1">Portátiles:<br/ >
  75.         <select name="portatiles" size="10" multiple="multiple">
  76.           <option selected="selected">Seleccionar</option>
  77.           <option>PO-01 Diagnostico y presupuesto[00]</option>
  78.           <option>PO-02 Reparación Pantalla[100]</option>
  79.           <option>PO-03 Reparación o sustitución de batería[45]</option>
  80.           <option>PO-04 Reparación o sustitución de teclado[57]</option>
  81.           <option>PO-05 Reparación o sustitución DVD[30]</option>
  82.           <option>PO-06 Reparación Placa Base[90]</option>
  83.           <option>PO-07 Reparación Disco Duro[56]</option>
  84.           <option>PO-08 Formatear y reinstalar Sistema Operativo[55]</option>
  85.           <option>PO-09 Ampliación Memoria[25]</option>
  86.           <option>PO-10 Limpieza virus[20]</option>
  87.           <option>PO-11 Ampliación de Disco Duro[55]</option>
  88.           <option>PO-12 Limpieza Portátil[30]</option>
  89.           <option>PO-13 Ventilador Portátil[35]</option>
  90.           <option>PO-14 Reparación GPU Video[70]</option>
  91.           <option>PO-15 Instalación software[15]</option>
  92.         </select>
  93.       </p></td>
  94.       <td class="caja1">&nbsp;</td>
  95.       <td>&nbsp;</td>
  96.     </tr>
  97.   </table>
  98.   <h5 class="h6">Este presupuesto no incluye gastos de materiales</h5>
  99.   <table width="580" height="20" border="0" cellpadding="0">
  100.     <tr bgcolor="#CCCCCC">
  101.       <td width="306" valign="top" class="caja1"><center>
  102.         <p>
  103.           <input onclick="compute(this.form)" type="button" value="Actualizar precio" name="Price" />
  104.         <input size="15" name="T_Price" />
  105.       </p>
  106.       </center></td>
  107.       <td width="276" valign="top" class="caja1">
  108.        <p>
  109.          <input onclick="print(this.form)" type="button" value="Previsualizar impresión" name="Print_data" />
  110.          <input type="reset" value="Borrar" />
  111.        </p>
  112.        <center>
  113.          <p>&nbsp;</p>
  114. </center></td>
  115.     </tr>
  116. </form>
  117. <p>
  118. </form>
  #3 (permalink)  
Antiguo 13/07/2011, 03:55
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Suma de valores de una lista de seleccion

Esto es JS, estás en la sección de PHP.
  #4 (permalink)  
Antiguo 13/07/2011, 05:24
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Respuesta: Suma de valores de una lista de seleccion

holas buenas!!!

si lo se pero lo que pasa es que en el de JS nadie me contesta y estoy un poco desesperado porque necesito entregar este trabajo!!

Un saludo!!
  #5 (permalink)  
Antiguo 13/07/2011, 05:35
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Suma de valores de una lista de seleccion

Buenas,

No tengo mucha idea de JS, pero me parece que te falta un bucle por algún lado. El problema es el tratamiento del select múltiple, si pones úncamente ifs, al entrar en uno, porque ese está seleccionado, ya no va a entrar en todos los demás, aunque también estén seleccionados. Además, los flags que utilizas para la suma final sólo se escribirían una vez. No sé si me explico, creo que tendrías que hacer un bucle por algún lado, que se repitiera tantas veces como opciones haya marcadas en el select múltiple y el flag fuera sumándose con el precio que deseas.

Esa es la idea, que la saco de programación en general, pero no me pidas que te dé código JS, porque conozco lo básico.

Un saludo.
  #6 (permalink)  
Antiguo 13/07/2011, 06:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Respuesta: Suma de valores de una lista de seleccion

Hola vgongas!!

vale creo que entiendo lo que me has dicho voy a ver si pruebo creando algún bucle y logro solucionarlo

Muchas gracias

Etiquetas: html, lista, php, seleccion, suma, 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 21:10.