Foros del Web » Programando para Internet » Javascript »

como generar un bucle para un select multiple

Estas en el tema de como generar un bucle para un select 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 13/07/2011, 07:14
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 13 años, 5 meses
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>
  #2 (permalink)  
Antiguo 13/07/2011, 07:15
 
Fecha de Ingreso: noviembre-2010
Ubicación: aun no se donde vivir
Mensajes: 112
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: como generar un bucle para un select multiple

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>

Etiquetas: bucle, html, select, 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 11:15.