Foros del Web » Programando para Internet » Javascript »

Hacer que la función pueda ser utilizada para otros select

Estas en el tema de Hacer que la función pueda ser utilizada para otros select en el foro de Javascript en Foros del Web. Me bajé la siguiente función: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function cambia_avisos ( i ) {     //tomo el valor del select ...
  #1 (permalink)  
Antiguo 13/01/2010, 04:57
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Hacer que la función pueda ser utilizada para otros select

Me bajé la siguiente función:

Código Javascript:
Ver original
  1. function cambia_avisos(i){
  2.     //tomo el valor del select del pais elegido
  3.     var pais
  4.     pais = document.f1.pais[document.f1.pais.selectedIndex].value
  5.     //miro a ver si el pais está definido
  6.     if (pais != 0) {
  7.        //si estaba definido, entonces coloco las opciones de la provincia correspondiente.
  8.        //selecciono el array de provincia adecuado
  9.        mis_provincias=eval("provincias_" + pais)
  10.        //calculo el numero de provincias
  11.        num_provincias = mis_provincias.length
  12.        //marco el número de provincias en el select
  13.        document.f1.provincia.length = num_provincias
  14.        //para cada provincia del array, la introduzco en el select
  15.        for(i=0;i<num_provincias;i++){
  16.           document.f1.provincia.options[i].value=mis_provincias[i]
  17.           document.f1.provincia.options[i].text=mis_provincias[i]
  18.        }
  19.     }else{
  20.        //si no había provincia seleccionada, elimino las provincias del select
  21.        document.f1.provincia.length = 1
  22.        //coloco un guión en la única opción que he dejado
  23.        document.f1.provincia.options[0].value = "-"
  24.        document.f1.provincia.options[0].text = "-"
  25.     }
  26.     //marco como seleccionada la opción primera de provincia
  27.     document.f1.provincia.options[0].selected = true
  28. }
  29. </script>

La misma hace que dado un select pais, al elegir una opción rellene el select provincia.

Lo que quisiera es la forma de poder tener varios select pais (podría ser pais1, pais2, etc) y que cada uno modifique el select provincia correspondiente (provincia1, provincia2, etc.)

Se me ocurría pasar un parametro, pero no se como modificar los nombres en la función de modo que tome como nombre del select una variable.

Desde ya, muchas gracias por la ayuda.
__________________
Todo se ve mejor si le miramos el lado positivo.
  #2 (permalink)  
Antiguo 13/01/2010, 07:23
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Hacer que la función pueda ser utilizada para otros select

Lo unico que se me viene a la mente ahora es tener una funcion que reciba el pais y el identificador del select provincia.
Ya teniendo ese identificador puedes diferenciar a cada select
puedes tener esta funcion:

Código Javascript:
Ver original
  1. function Provincia(pais,id){
  2.   .......
  3. }

Saludos.
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 13/01/2010, 07:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Hacer que la función pueda ser utilizada para otros select

El identificador del select de provincia se forma por "pr"+el identificadors del select de pais correspondiente...

así pais1 prpais1

luego pasas el select pais como objeto a la funcion, llenaprovincia(this)

así tienes el valor, el texto y el identificador con un solo parametro, a este ultimo le agregas "pr"+obj.id y accedes al select de prov correspondiente...

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. <script language="JavaScript" type="text/JavaScript">
  5. //Array bidimensional de provincias
  6. var provincias=new Array();
  7. var pareja=new Array(2);
  8. pareja[0]="PaisA";
  9. pareja[1]="Provincia_1_PaisA";
  10. provincias[0]=pareja;
  11. pareja=new Array(2);
  12. pareja[0]="PaisA";
  13. pareja[1]="Provincia_2_PaisA";
  14. provincias[1]=pareja;
  15. pareja=new Array(2);
  16. pareja[0]="PaisB";
  17. pareja[1]="Provincia_1_PaisB";
  18. provincias[2]=pareja;
  19. pareja=new Array(2);
  20. pareja[0]="PaisB";
  21. pareja[1]="Provincia_2_PaisB";
  22. provincias[3]=pareja;
  23. pareja=new Array(2);
  24. pareja[0]="PaisB";
  25. pareja[1]="Provincia_3_PaisB";
  26. provincias[4]=pareja;
  27.  
  28. function llenaProvincia(obj){
  29.     var pais;
  30.     pais = obj.value;
  31.     delOptions(document.getElementById("pr"+obj.id));
  32.     if (pais != "0") {
  33.        addOpt(document.getElementById("pr"+obj.id), 0, "Elige provincia", "0");
  34.        var j=1;
  35.        for(i=0;i<provincias.length;i++){
  36.             if(provincias[i][0]==obj.value){
  37.                 addOpt(document.getElementById("pr"+obj.id), j, provincias[i][1], provincias[i][1]);
  38.                 j++;
  39.           }
  40.       }
  41.    }else{
  42.                 addOpt(document.getElementById("pr"+obj.id), 0, "Elige pais", "0");
  43.    }
  44.    //marco como seleccionada la opci&#243;n primera de provincia
  45.    document.getElementById("pr"+obj.id).options[0].selected = true;
  46. }
  47.  
  48. function addOpt(oCntrl, iPos, sTxt, sVal){
  49.     var selOpcion=new Option(sTxt, sVal);
  50.     eval(oCntrl.options[iPos]=selOpcion);
  51. }
  52.  
  53. function delOptions(oCntrl){
  54.     while(oCntrl.length > 0) oCntrl.options[0]=null;
  55. }
  56.  
  57. </head>
  58.  
  59. <table width="100%" border="1" cellspacing="0" cellpadding="0">
  60.   <tr>
  61.     <td>Pais</td>
  62.     <td><select name="pais0" id="pais0" onChange="llenaProvincia(this);">
  63.          <option value="0">Elige pais</option>
  64.         <option value="PaisA">PaisA</option>
  65.         <option value="PaisB">PaisB</option>
  66.       </select></td>
  67.     <td>Provincia</td>
  68.     <td><select name="prpais0" id="prpais0">
  69.          <option value="0">Elige pais</option>
  70.      </select></td>
  71.   </tr>
  72.   <tr>
  73.     <td>Pais</td>
  74.     <td><select name="pais1" id="pais1" onChange="llenaProvincia(this);">
  75.          <option value="0">Elige pais</option>
  76.         <option value="PaisA">PaisA</option>
  77.         <option value="PaisB">PaisB</option>
  78.       </select></td>
  79.     <td>Provincia</td>
  80.     <td><select name="prpais1" id="prpais1">
  81.         <option value="0">Elige pais</option>
  82.       </select></td>
  83.   </tr>
  84.   <tr>
  85.     <td>Pais</td>
  86.     <td><select name="pais2" id="pais2" onChange="llenaProvincia(this);">
  87.           <option value="0">Elige pais</option>
  88.        <option value="PaisA">PaisA</option>
  89.         <option value="PaisB">PaisB</option>
  90.       </select></td>
  91.     <td>Provincia</td>
  92.     <td><select name="prpais2" id="prpais2">
  93.         <option value="0">Elige pais</option>
  94.       </select></td>
  95.   </tr>
  96.  
  97.  
  98. </body>
  99. </html>

Esto funciona.

Quim

Última edición por quimfv; 13/01/2010 a las 07:47

Etiquetas: select
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 10:26.