Foros del Web » Programando para Internet » Javascript »

Combos dependientes+Prototype

Estas en el tema de Combos dependientes+Prototype en el foro de Javascript en Foros del Web. Hola a todos, tengo una serie de 4 combos dependientes en los que dependiendo lo que se seleccione en el primero se muestra el contenido ...
  #1 (permalink)  
Antiguo 04/05/2009, 08:40
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Combos dependientes+Prototype

Hola a todos, tengo una serie de 4 combos dependientes en los que dependiendo lo que se seleccione en el primero se muestra el contenido del segundo y asi sucesivamente hasta llevar los 4.

El problema es que aveces no hay 4 niveles, por lo que no se puede llenar los 4 y queria que los sobrantes se ocultaran.

El codigo que tengo esta echo para que siempre quede la opcion "Select", tenga o no otras opciones el select. Lo que quiero es que cuando solo esta el Select sin ningun otra opcion se oculte el selector (<option></option)

Este es el js:
Código javascript:
Ver original
  1. var inner_select   = 'Select';
  2. var value_select   = '0.5';
  3. var loading_select = 'Loading';
  4. var select_id      = 'c_id';
  5. var select_value   = 'c_name';
  6.  
  7. function getJson(uri,id,param,next)
  8. {
  9.     new Ajax.Request(
  10.         uri,
  11.         {
  12.             method: 'POST',                    
  13.             parameters:
  14.             {
  15.                 id: param
  16.             },
  17.             onLoading:
  18.             function()
  19.             {
  20.                 if ($(id) == '0.5')
  21.                 {
  22.                     $(next).hide();
  23.                 }
  24.                 else
  25.                 {
  26.                 $(next).show();
  27.                 $(id).update('').disable();
  28.                 createOpt(id,value_select,loading_select);
  29.                                 }
  30.             },
  31.             onSuccess:
  32.             function(json)
  33.             {
  34.                 $(id).enable();
  35.                 json = json.responseText;
  36.                 getOpt(json.evalJSON(true),id);
  37.             }
  38.         });
  39. }
  40.  
  41. function getOpt(json,id)
  42. {
  43.     $(id).update('');
  44.     createOpt(id,value_select,inner_select);
  45.     json.each(
  46.         function(obj)
  47.         {
  48.             createOpt(id,obj[select_id],obj[select_value]);    
  49.         }
  50.     );
  51. }
  52.  
  53. function createOpt(id,value,inner)
  54. {
  55.     var opt = document.createElement('option');
  56.     opt.value = value;
  57.     opt.innerHTML = inner;
  58.     $(id).appendChild(opt);
  59. }
  60.  
  61. function selectHide(id)
  62. {
  63.     $(id).hide();
  64. }

Código html:
Ver original
  1. <select id="0level" name="0level">
  2. <option value="0">vacio</option>
  3. </select>
  4.  
  5. <select id="1level" name="1level">
  6. <option value="0">vacio</option>
  7.  
  8. <select id="2level" name="2level">
  9. <option value="0">vacio</option>
  10.  
  11. <select id="3level" name="3level">
  12. <option value="0">vacio</option>
  13. </body>
  14. <script type="text/javascript">
  15. getJson('<?php echo base_url(); ?>test/get_categoriesPrototype','0level','','0level'), selectHide('1level'), selectHide('2level'), selectHide('3level')
  16. $('0level').observe('change',function(el){ getJson('<?php echo base_url(); ?>test/get_subcategoriesPrototype','1level',$F('0level'),'1level') })
  17. $('1level').observe('change',function(el){ getJson('<?php echo base_url(); ?>test/get_subcategoriesPrototype','2level',$F('1level'),'2level') })
  18. $('2level').observe('change',function(el){ getJson('<?php echo base_url(); ?>test/get_subcategoriesPrototype','3level',$F('2level'),'3level') })

Última edición por seinkraft; 04/05/2009 a las 09:31
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 13:21.