Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/01/2010, 07:23
quimfv
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