Ver Mensaje Individual
  #24 (permalink)  
Antiguo 19/10/2010, 09:31
LOD_Fredy
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años
Puntos: 3
Respuesta: Llenar un select a partir de la opcion elegida en otro select

Gracias.
Edito: Ahora si, lo mas que he logrado y que segun yo esta bien pues funciona aunque en firefox no funciona tan bien como en ie (en firefox tienes que pasar el foco a otro elemento por medio del tab y en ie una vez esta vacio el campo puedes desplazarte a cualquiera de los que se habilitan. Aun asi, tiene una falla que no encuentro.

En la parte donde se checa que input es modificado (de original y orden), se supone que deshabilita el combo publicacion (todos los demas elementos del formulario que estan debajo de publicacion estan deshabilitados por default y se habilitan cuando se elije una publicacion y se deshabilitan cuando se selecciona el primer elemento del combo publicacion ya que todos estos se usan para una sola busqueda). El caso es que cuando se modifica original se deshabilita orden y publicacion sin embargo publicacion no se deshabilita, pero cuando se modifica orden si se deshabilita junto con original.

Código Javascript:
Ver original
  1. <script>
  2.       $(document).ready(function(){
  3.  
  4.           $("select").change(function(){
  5.  
  6.               // Vector para saber cuál es el siguiente combo a llenar
  7.  
  8.               var combos = new Array();
  9.  
  10.               combos['publicacion'] = "edicion";              
  11.  
  12.               // Tomo el nombre del combo al que se le a dado el clic por ejemplo: publicacion
  13.  
  14.               posicion = $(this).attr("name");
  15.  
  16.               // Tomo el valor de la opción seleccionada
  17.  
  18.               valor = $(this).val()      
  19.  
  20.               // Evaluó  que si es publicacion y el valor es 0, deshabilite los elementos del formulario que estan debajo del combo publicacion, que habilite los que estan arriba y vacie el combo edicion
  21.  
  22.               if(posicion == 'publicacion' && valor==0){
  23.                     $("#ord :input").removeAttr("disabled");
  24.                     $("#ori :input").removeAttr("disabled");
  25.                     $("#edicion").attr("disabled","disabled");                 
  26.                     $("#fecha").attr("disabled","disabled");
  27.                     $("#butfec").attr("disabled","disabled");
  28.                     $("#pag :input").attr("disabled","disabled");
  29.                     $("#edicion").html('<option value="" selected="selected">-----------</option>')                
  30.                     $("#pagina").attr("value","");
  31.                     $("#fecha").attr("value","");
  32.                    
  33.  
  34.               }else{
  35.                     //deshabilita los elementos del formulario que estan arriba del combo publicacion y habilita los que estan abajo
  36.                     $("#ori :input").attr("disabled","disabled");   //capa (div) que contiene el textbox y boton correspondiente a original
  37.                     $("#ord :input").attr("disabled","disabled");   //capa (div) que contiene el textbox y boton correspondiente a orden   
  38.                     $("#edicion").removeAttr("disabled");                  
  39.                     $("#fecha").removeAttr("disabled");
  40.                     $("#butfec").removeAttr("disabled");
  41.                     $("#pag :input").removeAttr("disabled");
  42.                    
  43.                     /* En caso contrario agregado el letreo de cargando al combo edicion  
  44.                     Ejemplo: Si selecciona publicacion se va a tener que el siguiente según el vector combos es: edicion por qué combos [publicacion] = edicion  
  45.                     */                 
  46.                     $("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
  47.  
  48.                     /* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de edicion, esto porque no tendría caso hacer la consulta edicion porque no existe un combo dependiente de este */
  49.  
  50.                     if(valor!="0" || posicion !='edicion'){
  51.  
  52.                     // Llamamos a pagina de combos.php donde ejecuto las consultas para llenar el combo
  53.  
  54.                       $.post("combo.php",{
  55.                                           combo:$(this).attr("name"), // Nombre del combo  
  56.                                           id:$(this).val() // Valor seleccionado  
  57.                                           },function(data){  
  58.                                                           $("#"+combos[posicion]).html(data);    //Tomo el resultado de pagina e inserto los datos en el combo indicado                                                          
  59.                                                           })                                              
  60.                   }
  61.               }
  62.           })
  63.             $("input").change(function(){
  64.                
  65.               posicion = $(this).attr("name");
  66.  
  67.               valor = $(this).val();                      
  68.  
  69.                 if(posicion == "original" && valor!=""){                             
  70.                     $("#ord :input").attr("disabled","disabled");   //capa /div) que contiene el textbox y boton correspondiente a original                        
  71.                     $("#publicacion").attr("disabled","disabled");             
  72.                 }
  73.                 else{                        
  74.                     $("#ord :input").removeAttr("disabled");
  75.                     $("#publicacion").removeAttr("disabled");              
  76.                 }
  77.                 if(posicion == "orden" && valor!=""){                            
  78.                     $("#ori :input").attr("disabled","disabled");   //capa /div) que contiene el textbox y boton correspondiente a original                        
  79.                     $("#publicacion").attr("disabled","disabled");             
  80.                 }
  81.                 else{                        
  82.                     $("#ori :input").removeAttr("disabled");
  83.                     $("#publicacion").removeAttr("disabled");              
  84.                 }
  85.               })       
  86.       })  
  87. </script>

Espero me entiendan y me digan donde esta el error, yo ya me canse de ver el codigo y no ver errores (de hecho vi otros pero ese no).

Gracias de nuevo y si esto amerita ir en otro tema lo pongo.

Última edición por LOD_Fredy; 19/10/2010 a las 12:49