Foros del Web » Programando para Internet » Javascript »

Combo: no funciona bien defaultSelected en Explorer

Estas en el tema de Combo: no funciona bien defaultSelected en Explorer en el foro de Javascript en Foros del Web. Hola! En Firefox y Safari funciona pero en Explorer no me funciona el defaultSelected cuando recibe los datos de la BBDD. Por ejemplo, si el ...
  #1 (permalink)  
Antiguo 09/12/2011, 03:50
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 13 años, 8 meses
Puntos: 2
Pregunta Combo: no funciona bien defaultSelected en Explorer

Hola!

En Firefox y Safari funciona pero en Explorer no me funciona el defaultSelected cuando recibe los datos de la BBDD. Por ejemplo, si el registro tiene País: España, Ciudad: Toledo. Pues el país lo pone bien pero la ciudad me pone la primera del listado; esto solo ocurre con Explorer ¿alguna idea?:

Código PHP:

<?php
// Saco el listado de países

echo "<select name='id_pais' style='width:186px;' id='id_pais' onChange='componCiudades(this.value)'>\n";
echo 
"<option value=''>--País--</option>";
while (
$row_pais_list $result_pais_list->fetch_assoc()){
    
$id_pais_com $row_pais_list["id_pais"];
    
$nombre_pais $row_pais_list["nombre"];
    echo 
"<option value='" .$id_pais_com"'";
    if (
$id_pais_com==$id_pais) echo " selected='selected' ";
    echo 
">" .$nombre_pais"</option>\n";
}
echo 
"</select>\n\n";
?>

<script>
function componCiudades($id_pais_com){
document.formulario.id_ciudad.length=0;
document.formulario.id_ciudad.options[0] = new Option("-- Ciudad --","","defaultSelected","");
var indice=1;

<?php
while($row_ciudad_list $result_ciudad_list->fetch_assoc()){ 
    
$nombre_ciudad $row_ciudad_list["nombre"];
    
$id_ciudad_com $row_ciudad_list["id_ciudad"];
    
$id_pais_com_city $row_ciudad_list["id_pais"];

?>
if($id_pais_com=='<?=$id_pais_com_city?>'){
    document.formulario.id_ciudad.options[indice] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>","","");
    if(<?=$id_ciudad_com?>=='<?=$id_ciudad?>'){document.formulario.id_ciudad.options[0] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>","defaultSelected","");} // Si tiene ciudad, la selecciono
    indice++;
    }
<?php ?>
}
</script>
<?php
echo "<select name='id_ciudad' style='width:186px;' id='id_ciudad'>\n";
echo 
"<option value=''>--Ciudad--</option>\n";
    
// Si existe el país, saco el listado de sus ciudades
    
if ($id_pais!="") echo "<script>componCiudades('".$id_pais."');</script>";
echo 
"</select>\n\n";
?>
  #2 (permalink)  
Antiguo 09/12/2011, 06:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Combo: no funciona bien defaultSelected en Explorer

es recomendable usar innerHTML para asignar todo el select de una vez en una capa
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 09/12/2011, 08:29
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Combo: no funciona bien defaultSelected en Explorer

Gracias maycolalvarez! no he usado nunca innerHTML, y mis conocimientos en javascript son escasos, voy a ver cóme se usa y a probar…
  #4 (permalink)  
Antiguo 09/12/2011, 08:51
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Combo: no funciona bien defaultSelected en Explorer

es incluso más fácil, solo concatena toda la estructura del select en una sóla variable y se lo aplicas a un div que será el contenedor de dicho select
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 09/12/2011, 09:28
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Combo: no funciona bien defaultSelected en Explorer

No sé si lo que he hecho es una 'burrada' porque no sé casi nada de javascript, he probado lo que me comentas de poner todo en una variable (que no sé cómo se usan en javascript) y en un div llamar a la variable con innerHTML (que tampoco sé cómo se usa) por supuesto no me funciona me parece que tengo que aprender javascript desde el principio....


Código Javascript:
Ver original
  1. <script>
  2. var combo_ciudad ='
  3. function componCiudades($id_pais_com){
  4. document.formulario.id_ciudad.length=0;
  5. document.formulario.id_ciudad.options[0] = new Option("-- Ciudad --","","defaultSelected","");
  6. var indice=1;
  7.  
  8. <?php
  9. while($row_ciudad_list = $result_ciudad_list->fetch_assoc()){
  10.     $nombre_ciudad = $row_ciudad_list["nombre"];
  11.     $id_ciudad_com = $row_ciudad_list["id_ciudad"];
  12.     $id_pais_com_city = $row_ciudad_list["id_pais"];
  13.  
  14. ?>
  15.  
  16. if($id_pais_com=='<?=$id_pais_com_city?>'){
  17.     document.formulario.id_ciudad.options[indice] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>","","");
  18.     if(<?=$id_ciudad_com?>=='<?=$id_ciudad?>'){document.formulario.id_ciudad.options[0] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>","defaultSelected","");} // Si tiene ciudad, la selecciono
  19.     indice++;
  20.     }
  21. <?php } ?>
  22. }
  23. '
  24. document.getElementById(combo_ciudad).innerHTML='combo_ciudad';
  25. </script>
  26. <?php
  27.  
  28. echo "<div id='combo_ciudad'>";
  29. echo "<select name='id_ciudad' style='width:186px;' id='id_ciudad'>\n";
  30. echo "<option value=''>--Ciudad--</option>\n";
  31.     // Si existe el país, saco el listado de sus ciudades
  32.     if ($id_pais!="") echo "<script>componCiudades('".$id_pais."');</script>";
  33. echo "</select>\n\n";
  34. echo "</div>";
  35.  
  36. ?>
  #6 (permalink)  
Antiguo 11/12/2011, 07:26
 
Fecha de Ingreso: julio-2010
Mensajes: 29
Antigüedad: 13 años, 8 meses
Puntos: 2
Sonrisa Respuesta: Combo: no funciona bien defaultSelected en Explorer

¡Solucionado!

No he sido capaz de concatenar toda la estructura del select en una sóla variable, tal como decía maycol (en php sé hacerlo pero en javascript... ni idea), pero al menos funciona ya en Explorer. Lo que he hecho es añadir en el script la siguiente línea:

Código Javascript:
Ver original
  1. document.formulario.id_ciudad.options[0].selected = true;

Lo dejo aquí por si a alguien le hace falta:

Código Javascript:
Ver original
  1. <script>
  2. function componCiudades($id_pais_com){
  3. document.formulario.id_ciudad.length=0;
  4. document.formulario.id_ciudad.options[0] = new Option("-- Ciudad --","","defaultSelected","");
  5. var indice=1;
  6.  
  7. <?php
  8. while($row_ciudad_list = $result_ciudad_list->fetch_assoc()){
  9.     $nombre_ciudad = $row_ciudad_list["nombre"];
  10.     $id_ciudad_com = $row_ciudad_list["id_ciudad"];
  11.     $id_pais_com_city = $row_ciudad_list["id_pais"];
  12.  
  13. ?>
  14.     if($id_pais_com=='<?=$id_pais_com_city?>'){
  15.         if(<?=$id_ciudad_com?>=='<?=$id_ciudad?>'){
  16.             document.formulario.id_ciudad.options[0] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>");
  17.             document.formulario.id_ciudad.options[0].selected = true;
  18.             }
  19.         document.formulario.id_ciudad.options[indice] = new Option("<?=$nombre_ciudad?>","<?=$id_ciudad_com?>");
  20.         indice++;
  21.         }
  22.     <?php } ?>
  23. }
  24. </script>

Etiquetas: combo, defaultselected, explorer
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 15:38.