Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2011, 07:14
oliverarthurnardi
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 14 años, 1 mes
Puntos: 3
como generar un bucle para un select 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 y no entiendo el porque cuando solo hago una sola selección si me funciona.
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. T_Price=pc_flag+re_flag+po_flag+rep_flag+mac_flag
  280. form.T_Price.value="     € "+ T_Price;
  281. }
  282.  
  283. function print(form){
  284.  
  285. if(!called){
  286.  
  287.     compute(form);
  288.  
  289. }
  290. text = ("<HEAD><TITLE>'On-line Calcular presupuesto'</TITLE></HEAD>");
  291.  
  292. text = (text +"<BODY BGCOLOR =  '#C0C0C0' ><CENTER><B><FONT SIZE = 4><FONT COLOR=BLUE>Novtiz<br>servicio informatico</FONT></FONT></B>");
  293.  
  294. text= (text +"</CENTER>");
  295.  
  296. text=(text+"<hr>");
  297. text=(text+"<TABLE BORDER =0><TR VALIGN=Top><TD VALIGN=Top>");
  298.  
  299. text=(text+"<B><BR><BR><BR> <BR><BR>");
  300.  
  301. text=(text+" <BR><BR><BR><BR><BR><BR>");
  302.  
  303. text=(text+"</B></TD><TD>")
  304. text=(text+"<B>"+ pc_print+"<BR>"+re_print+"<BR>"+ rep_print+"<BR>");
  305.  
  306. text=(text+"<BR>"+po_print+"<BR>"+ mac_print+"<BR>");
  307.  
  308.  
  309.  
  310. text=(text+"<TD></TR></TABLE><hr>");
  311.  
  312. text=(text+"<B><FONT COLOR=RED>Coste total:</FONT>"+" &nbsp &nbsp &nbsp €&nbsp;"+T_Price);
  313.  
  314. text=(text+"<form><FONT SIZE=-1><FONT COLOR=GREEN>Para imprimir, seleccione Archivo e Imprimir.</FONT></FONT>");
  315. text=(text+"<br><form><FONT SIZE=-1><FONT COLOR=RED>Este presupuesto no incluye gastos de materiales.</FONT></FONT></br>");
  316.  
  317. text=(text+"&nbsp;&nbsp;&nbsp;<input type=button value=Close onClick=window.close()>"+"</form></body></html>");
  318.  
  319.                 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")
  320.  
  321.                 msgWindow.document.write(text)
  322.  
  323.                 msgWindow.document.close()
  324.  
  325. }
  326. </script>