Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Una ayudita

Estas en el tema de Una ayudita en el foro de Frameworks JS en Foros del Web. se que es re largo lo que voy a escribir pero realmente no tengo a quien preguntarle. Hola, estoy aprendiendo javascript, ahora estamos dando jquery ...
  #1 (permalink)  
Antiguo 22/06/2012, 02:05
 
Fecha de Ingreso: junio-2012
Ubicación: Montevideo
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Una ayudita

se que es re largo lo que voy a escribir pero realmente no tengo a quien preguntarle.

Hola, estoy aprendiendo javascript, ahora estamos dando jquery y estoy trancado en este ejercicio y lo que no entiendo es como generar una funcion en jquery que para que cuando seleccione un pais dentro del select, muestre especificamente las ciudades de ese pais partiendo de la base que en el ejercicio me dan 4 arrays indexados.

Código javascript:
Ver original
  1. Uruguay=["Tacuarembo","Paysandu","Treinta y Tres","Rivera","Salto"];
  2. Argentina=["Buenos Aires","La Rioja","Mendoza"];
  3. Portugal=["Lisboa","Porto"];
  4. España=["Madrid","Sevilla"];

pense en poner varios if para cada pais dentro de la funcion pero supongo que debe haber un metodo mas facil. ejemplo(de lo que pense)

Código javascript:
Ver original
  1. if($('#pais option:selected').text() == "Portugal")

y lo que tampoco me queda claro tampoco es como generar de forma dinamica un elemento select para mostrar las ciudades.

la letra del ejercicio por las dudas(por si no me entienden)

Genere un elemento select de forma dinámica, dentro del div cuyo id es ciudades. El nuevo elemento deberá contar con la cantidad de elementos option de acuerdo a la cantidad de ciudades de cada vector. Ejemplo: si el usuario selecciona Portugal, dinámicamente se generará en la página el siguiente código dentro del div ciudades:
Código javascript:
Ver original
  1. <select id=’s1’>
  2.     <option value=0>Lisboa</option>
  3. <option value=0>Porto</option>
  4. </select>

y el html

Código javascript:
Ver original
  1. <div id="pais">
  2.               <label class="fila2">Ingrese el pa&iacute;s de origen </label><br>
  3.               <select class="fila2">
  4.                   <optgroup label="America">
  5.                       <option value="Uruguay">Uruguay</option>
  6.                       <option value="Uruguay">Argentina</option>
  7.                   </optgroup>
  8.                   <optgroup label="Europa">
  9.                       <option value="Uruguay">Espa&ntilde;a</option>
  10.                       <option value="Uruguay">Portugal</option>
  11.                   </optgroup>
  12.               </select>
  13. </div>


GRACIAS!
  #2 (permalink)  
Antiguo 22/06/2012, 06:53
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Una ayudita

Creo que la parte más confusa o complicada de tu problema, es obtener los arreglos a partir del valor del select. Básicamente queremos obtener una variable a partir de un string con su nombre. Si la variable es global, podemos hacer esto:

Código Javascript:
Ver original
  1. variable = window['nombre_de_variable_en_string'];

A partir de ahí es más fácil. Una forma sería algo así:

Código Javascript:
Ver original
  1. // variables GLOBALES
  2. Uruguay=["Tacuarembo","Paysandu","Treinta y Tres","Rivera","Salto"];
  3. Argentina=["Buenos Aires","La Rioja","Mendoza"];
  4. Portugal=["Lisboa","Porto"];
  5. Espana=["Madrid","Sevilla"];
  6.  
  7. $(function(){
  8.     // acá podemos manipular el DOM con jQuery
  9.    
  10.     // obtengo los dos combos en variables
  11.     var $combo_pais = $('#combo_pais');
  12.     var $combo_ciudad = $('#combo_ciudad');
  13.    
  14.     // en el evento que el combo pais cambie, hacer algo
  15.     $combo_pais.change(function(){
  16.         // obtengo el arreglo de acuerdo al valor que se seleccionó
  17.         var arreglo = window[$(this).val()];
  18.        
  19.         //vacío el select de ciudad
  20.         $combo_ciudad.empty();
  21.        
  22.         // recorro el arreglo agregando cada valor al select de ciudad usando $.each()
  23.         $.each(arreglo, function(){
  24.             $combo_ciudad.append('<option value="'+this+'">'+this+'</option>');
  25.         })
  26.     });
  27. });

Código HTML:
Ver original
  1. <div id="pais">
  2.           <label class="fila2">Ingrese el pa&iacute;s de origen </label><br>
  3.           <select id="combo_pais" class="fila2">
  4.                 <option value="0">Seleccione un país</option>
  5.               <optgroup label="America">
  6.                   <option value="Uruguay">Uruguay</option>
  7.                   <option value="Argentina">Argentina</option>
  8.               </optgroup>
  9.               <optgroup label="Europa">
  10.                   <option value="Espana">Espa&ntilde;a</option>
  11.                   <option value="Portugal">Portugal</option>
  12.               </optgroup>
  13.           </select>
  14.           <select id="combo_ciudad">
  15.             <option value="0">Seleccione un país primero</option>
  16.           </select>
  17.     </div>


El código está prolijo y bien comentado, para que lo entiendas sin copiar y pegar ;)
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 23/06/2012, 17:20
 
Fecha de Ingreso: junio-2012
Ubicación: Montevideo
Mensajes: 11
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Una ayudita

Gracias Naahuel! ahora me queda mas claro!

Etiquetas: funcion, html, 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 22:20.