Foros del Web » Programando para Internet » Javascript »

sumas de campos con lista de selección multiple

Estas en el tema de sumas de campos con lista de selección multiple 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 12/07/2011, 14:02
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Exclamación sumas de campos con lista de selección multiple

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;   //to make sure the function compute() is called
  3. var T_Price=0;
  4. var pc_flag;    //pcsobremesa flag for keeping track of the choices
  5. var pc_print="";
  6. var re_flag;    //flag for redes
  7. var re_print;
  8. var po_flag;    //flag for portatiles
  9. var po_print;
  10. var rep_flag;   //flag for reparación
  11. var rep_print;
  12. var mac_flag;   //flag for MAC
  13. var mac_print;
  14. var software_flag; //flag for 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].selected){
  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].selected){
  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>Vista del presupuesto</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 12/07/2011, 14:06
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años
Puntos: 3
Respuesta: sumas de campos con lista de selección multiple

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

Etiquetas: campos, html, lista, sumas, 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 18:14.