Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/02/2009, 08:03
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: 3 combobox dependientes

Hola

Con ASP, la verdad es que no queda muy bien. Mejor sería ASP y AJAX

poblaciones.html
Código html:
Ver original
  1. <script type="text/javascript" src="poblaciones.js"></script>
  2. </head>
  3. <form action="poblaciones.asp" method="post">
  4. <div id="cajas">
  5. <tr>
  6. <td id="t_1">
  7. Comunidad<br /><select name="s_1" id="s_1">
  8. <option value="">Seleccionar Comunidad</option>
  9. <option value="Extremadura">Extremadura</option>
  10. <option value="Andalucia">Andalucia</option>
  11. </td>
  12. <td id="t_2">
  13. Provincia<br /><select name="s_2" id="s_2" disabled="true">
  14. <option value="">Seleccionar Provincia</option>
  15. </td>
  16. <td id="t_3">
  17. Ciudad<br /><select name="s_3" id="s_3" disabled="true">
  18. <option value="">Seleccionar Ciudad</option>
  19. </td>
  20. <td id="t_4">
  21. Calle<br /><select name="s_4" id="s_4" disabled="true">
  22. <option value="">Seleccionar Calle</option>
  23. </td>
  24. </tr>
  25. </div>
  26. </form>
  27. </body>
  28. </html>

poblaciones.js
Código js:
Ver original
  1. var ns4 = (document.layers)? true:false
  2. var ie4 = (document.all)? true:false
  3. var ns6 = (document.getElementById)? true:false
  4.  
  5. function captura_objeto(idnombre) {
  6.     if (ns6)
  7.     {
  8.     return document.getElementById(idnombre);
  9.     }
  10.     else if (ie4)
  11.     {
  12.     return document.all[idnombre];
  13.     }
  14.     else if (ns4)
  15.     {
  16.     return document.layers[idnombre];
  17.     }
  18.     else
  19.     {
  20.     return null;
  21.     }
  22. }
  23.  
  24.  
  25. function creaAjax(){
  26.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  27.     var ajax = false;
  28.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  29.         try{
  30.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  31.         }
  32.         catch(e) {
  33.             ajax = false;
  34.         }
  35.     }
  36.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  37.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  38.     }
  39.     return ajax;
  40. }
  41.  
  42.  
  43. function Ciudad(buska, id) {
  44. var ajax=creaAjax();
  45. var objetosel = captura_objeto("t_"+id);
  46. ajax.open("GET",'poblaciones_ajax.asp?mostrark='+buska+'&d='+id,true);
  47. ajax.onreadystatechange = function() {
  48.  
  49.         if (ajax==null){
  50.         alert ("Tu navegador web no soporta AJAX!");
  51.         return;
  52.     }
  53.  
  54.      if (ajax.readyState==4){
  55.                        if(ajax.status==200){          
  56.             if (objetosel.disabled = true)  objetosel.disabled = false;
  57.                     else objetosel.disabled = true;    
  58.                                                  objetosel.innerHTML = ajax.responseText;
  59.                    }
  60.                        else if (ajax.status==404)
  61.                                              {
  62.  
  63.                                     objetosel.innerHTML = "La dirección no existe";
  64.                                              }
  65.                                      else
  66.                                              {
  67.                                     objetosel.innerHTML = "Error: " + ajax.status;
  68.                                              }
  69.                                     }
  70.                   }
  71.    
  72.     ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  73.              ajax.send(null);
  74.             return
  75. }
  76.    
  77.  
  78.  
  79.  
  80. function Evento() {
  81. var elemento = document.getElementById("s_1")
  82. var nomevento = "change"
  83. var funcion = function() {
  84. var suma = parseInt(this.id.split("_")[1]);
  85. suma += parseInt(1);
  86. Ciudad(document.getElementById(this.id).options[document.getElementById(this.id).selectedIndex].value, +suma);
  87. }
  88.  
  89.   if (elemento.attachEvent)
  90.   {
  91.       var f=function(){
  92.         funcion.call(elemento,window.event);
  93.     }
  94.     elemento.attachEvent('on'+nomevento,f);
  95.     return true;
  96.   }
  97.   else  
  98.     if (elemento.addEventListener)
  99.     {
  100.       elemento.addEventListener(nomevento,funcion,false);
  101.       return true;
  102.     }
  103.     else
  104.       return false;
  105. }
  106.  
  107.  
  108. window.onload = Evento;

CONTINUA EN EL SIGUIENTE POST
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />