Foros del Web » Programando para Internet » Javascript »

Select dinámico

Estas en el tema de Select dinámico en el foro de Javascript en Foros del Web. Buenas a todos: Tengo un form con un select. A continuación de éste, habría otro que depende del primero, es decir, en funcion de la ...
  #1 (permalink)  
Antiguo 07/09/2010, 05:27
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 1
Select dinámico

Buenas a todos:

Tengo un form con un select. A continuación de éste, habría otro que depende del primero, es decir, en funcion de la opción seleccionada en el primer select, cambiará el contenido del segundo... Os muestro el código que estoy usando y que no funciona... al menos dinamicamente:

Código:
<script type="text/javascript">

var cat;
cat = $("#categoria").val();
if(cat == 'Hotel') {
$('#add_form').append("Estrellas:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Estrella</option><option>2 Estrellas</option><option>3 Estrellas</option><option>4 Estrellas</option><option>5 Estrellas</option></select><br><br>");
}

else if(cat == 'Restaurante') {
$('#add_form').append("Tenedores:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Tenedor</option><option>2 Tenedores</option><option>3 Tenedores</option><option>4 Tenedores</option><option>5 Tenedores</option></select><br><br>");
}

else {
$('#add_form').append("Subcategor&iacute;a:<br><select id='subcategoria' name='subcategoria'><option>-----</option><option>Azafatas</option><option>Empresas de transporte</option><option>Catering</option><option>Audiovisuales</option><option>OPC</option><option>Publicidad y comunicaci&oacute;n</option><option>Agencias de viajes</option></select><br><br>");
}

</script>
Bueno, espero que alguien haya hecho esto antes y me pueda ayudar.

Gracias y un saludo!
  #2 (permalink)  
Antiguo 07/09/2010, 05:37
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Select dinámico

Yo con jQuery no sé pero si puedes hacerlo en JS normal te puedo ayudar.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 07/09/2010, 05:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Select dinámico

exploremos cualquier opción, si no es demasiado compleja...
  #4 (permalink)  
Antiguo 07/09/2010, 06:26
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Select dinámico

Ok, veamos:
Código Javascript:
Ver original
  1. function depender(sel, sel2){
  2.  var textos = new Array('1estrella', '2estrellas', '1tenedor', '2tenedores', 'audiovisual', 'azafatas');
  3.  switch (sel.value){
  4.   case 'Hotel' :
  5.    for(i=0; i<2; i++){
  6.     sel2.options[i].text = textos[i];
  7.    }
  8.    break;
  9.   case 'Restaurante' :
  10.    for(i=2; i<4; i++){
  11.     sel2.options[i-2].text = textos[i];
  12.    }
  13.    break;
  14.   default :
  15.    for (i=4; i<textos.length; i++){
  16.     sel2.options[i-4].text = textos[i];
  17.    }
  18.    sel2.setAttribute('id', 'subcategoria';
  19.    sel2.setAttribute('name', 'subcategoria');
  20.    break;
  21.   }
  22. }

Evidentemente este código se puede hacer mucho más bonito y elegante, pero así a grandes rasgos tendría que funcionar igual. Por cierto, ten en cuenta el número de opciones en los for para restar.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 08/09/2010, 03:07
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Select dinámico

No me ha funcionado esa opción que me propones... ya encontré algo que mas o menos funciona, pero sigue teniendo un fallo. Este es el código:

Código:
var cat;
cat = $("#categoria").val();

$("#categoria").change( function () {

alert(cat); 
if(cat == 'Hotel') {
    $('#dim_form').append("Estrellas:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Estrella</option><option>2 Estrellas</option><option>3 Estrellas</option><option>4 Estrellas</option><option>5 Estrellas</option></select><br><br>");
}
else if(cat == 'Restaurante') {
    $('#dim_form').append("Tenedores:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Tenedor</option><option>2 Tenedores</option><option>3 Tenedores</option><option>4 Tenedores</option><option>5 Tenedores</option></select><br><br>");
}
else if(cat ==  'Servicios') {
    $('#dim_form').append("Subcategor&iacute;a:<br><select id='subcategoria' name='subcategoria'><option>-----</option><option>Azafatas</option><option>Empresas de transporte</option><option>Catering</option><option>Audiovisuales</option><option>OPC</option><option>Publicidad y comunicaci&oacute;n</option><option>Agencias de viajes</option></select><br><br>");
}

});
El problema está en que siempre mantiene el value del select de manera que, cuando hace el alert, elija la opción que elija, siempre me dice 'Hotel'... y entonces solamente me agrega la primera versión del 2º select. Pienso que debe haber alguna opción que no sea el $('select').val(); para extraer ese valor...

Gracias y un saludo!


PD --> Gracias de todas formas...
  #6 (permalink)  
Antiguo 08/09/2010, 06:27
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Select dinámico

Hola

Prueba así
Cita:
$(document).ready(function(){

var cat;

$("#categoria").change( function () {
cat = this.value;

if(cat == 'Hotel') {
$('#dim_form').append("Estrellas:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Estrella</option><option>2 Estrellas</option><option>3 Estrellas</option><option>4 Estrellas</option><option>5 Estrellas</option></select><br><br>");
}

else if(cat == 'Restaurante') {
$('#dim_form').append("Tenedores:<br><select id='puntuacion' name='puntuacion'><option>-----</option><option>1 Tenedor</option><option>2 Tenedores</option><option>3 Tenedores</option><option>4 Tenedores</option><option>5 Tenedores</option></select><br><br>");
}

else if(cat == 'Servicios') {
$('#dim_form').append("Subcategor&iacute;a:<br><se lect id='subcategoria' name='subcategoria'><option>-----</option><option>Azafatas</option><option>Empresas de transporte</option><option>Catering</option><option>Audiovisuales</option><option>OPC</option><option>Publicidad y comunicaci&oacute;n</option><option>Agencias de viajes</option></select><br><br>");
}

});
});
Suerte
PD: Recuerda que este es el foro de javascript
__________________
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;" />
  #7 (permalink)  
Antiguo 08/09/2010, 17:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Select dinámico

CONSEGUIDO!!

Peeeerfecto, ahora ya si me coge el cambio de valor en el select y cambia el 2º perfectamente, lo único que lo he implementado con un empty() antes del append() y ya va canela en rama!!

Muchísimas gracias hefaso!

P.D. --> Porque lo dices?hay un foro específico de jQuery??

Última edición por Banditolane; 08/09/2010 a las 18:22 Razón: al final he resuelto el fallo...
  #8 (permalink)  
Antiguo 08/09/2010, 18:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Select dinámico


Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: 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 21:50.