Foros del Web » Programando para Internet » Javascript »

Ocultar Boton Submit en un ComboBox

Estas en el tema de Ocultar Boton Submit en un ComboBox en el foro de Javascript en Foros del Web. Que tal, hace tiempo encontre un script para combobox dependiente, y me gusto mucho, asi que le agregue el boton de submit, pero lo oculte ...
  #1 (permalink)  
Antiguo 18/03/2011, 23:05
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Ocultar Boton Submit en un ComboBox

Que tal, hace tiempo encontre un script para combobox dependiente, y me gusto mucho, asi que le agregue el boton de submit, pero lo oculte para no darle continuar sin escoger las opciones. Luego, al ir escogiendo las diferentes opciones se va mostrando u ocultando segun sea el caso. Hasta ahi todo bien, el problema es que al dar click en la primera opcion de cada lista de opciones, (-Categoria- y -SubCategoria-) se habilita el boton.
Trate de corregir eso, pero la verdad no le encontre como, ya que se muy poquito o casi nada de javascript.

Ojala algun experto en JavaScript me pueda echar la mano, la verdad ya estoy bien desesperado con esto. De antemano Muchas Gracias.

Aqui el codigo JavaScript.

Código Javascript:
Ver original
  1. // Primer combo box
  2.     data_1 = new Option("1", "1");
  3.     data_2 = new Option("2", "2");
  4.  
  5. // Segundo combo box
  6.     data_1_1 = new Option("11", "11");
  7.     data_1_2 = new Option("12", "12");
  8.     data_2_1 = new Option("21", "21");
  9.     data_2_2 = new Option("22", "22");
  10.     data_2_3 = new Option("23", "23");
  11.     data_2_4 = new Option("24", "24");
  12.     data_2_5 = new Option("25", "25");
  13.  
  14. // Tercer combo box
  15.     data_1_1_1 = new Option("111", "111");
  16.     data_1_1_2 = new Option("112", "112");
  17.     data_1_1_3 = new Option("113", "113");
  18.     data_1_2_1 = new Option("121", "121");
  19.     data_1_2_2 = new Option("122", "122");
  20.     data_1_2_3 = new Option("123", "123");
  21.     data_1_2_4 = new Option("124", "124");
  22.     data_2_1_1 = new Option("211", "211");
  23.     data_2_1_2 = new Option("212", "212");
  24.     data_2_2_1 = new Option("221", "221");
  25.     data_2_2_2 = new Option("222", "222");
  26.     data_2_3_1 = new Option("231", "231");
  27.     data_2_3_2 = new Option("232", "232");
  28.  
  29. // Cuarto combo box
  30.     data_1_1_1_1 = new Option("1111","1111")
  31.     data_2_2_1_1 = new Option("2211","2211")
  32.     data_2_2_1_2 = new Option("2212","2212")
  33.  
  34. // Otros Parametros
  35.     displaywhenempty=""
  36.     valuewhenempty=-1
  37.  
  38.     displaywhennotempty="-SubCategoria-"
  39.     valuewhennotempty=0
  40.  
  41.  
  42. function change(currentbox) {
  43.     numb = currentbox.id.split("_");
  44.     currentbox = numb[1];
  45.     i=parseInt(currentbox)+1
  46.  
  47. // Vacio todos los combo boxes siguiendo la actual.
  48.  
  49.     while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
  50.            (document.getElementById("combo_"+i)!=null))
  51.         {
  52.          son = document.getElementById("combo_"+i);
  53.          
  54.          /*
  55.          Se borran todas las opciones menos la primera (no esta permitido)
  56.          Esto es, cuando se selecciona una categoria del combo anterior, las que
  57.          ya se habian desplegado en el siguiente, se borran.
  58.          */
  59.          for (m=son.options.length-1;m>0;m--)
  60.              son.options[m]=null;
  61.              // Reseteo la primera opcion
  62.              son.options[0]=new Option(displaywhenempty,valuewhenempty)
  63.              i=i+1
  64.         }
  65.  
  66. // Se crea un String con el nombre base ("stringa"), ejemplo: "data_1_0"
  67. // al que se agregara _0,_1,_2,_3 etc para obtener el nombre del combo box que se va a llenar.
  68.  
  69.     stringa='data'
  70.     i=0
  71.     while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
  72.            (document.getElementById("combo_"+i)!=null)) {
  73.            eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")
  74.            f1.continuar.style.display="block"; //Muestro el Boton cuando ya no hay mas combobox a mostrar.
  75.            if (i==currentbox) break;
  76.            i=i+1
  77.     }
  78.    
  79. // llenando el combo hijo ("son") Si es que existe.
  80.  
  81.     following=parseInt(currentbox)+1
  82.     if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&
  83.        (document.getElementById("combo_"+following)!=null))
  84.     {
  85.        son = document.getElementById("combo_"+following);
  86.        stringa=stringa+"_"
  87.        i=0
  88.        while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0))
  89.         {
  90.                 /* Si no hay opciones, Vacio la primera opcion del combo hijo ("son")
  91.                 De lo contrario, pongo "-SubCategoria-"
  92.                 */
  93.                  if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))
  94.                         {
  95.                          if (eval("typeof("+stringa+"1)=='undefined'"))
  96.                             {
  97.                             eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")
  98.                            
  99.                                 f1.continuar.style.display="block"; //Muestro el Boton cuando no hay mas subcategorias aunque haya otro combobox.
  100.                             }
  101.                          else
  102.                             {
  103.                             eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
  104.                                      f1.continuar.style.display="none"; //Oculto el Boton
  105.                                      f1.combo1.disabled=false
  106.                                      f1.combo1.style.display="block"
  107.                             }
  108.                         }
  109.               else
  110.                     eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")
  111.                     i=i+1      
  112.        }
  113.        i=1
  114.        combostatus=''
  115.        cstatus=stringa.split("_")
  116.        while (cstatus[i]!=null)
  117.         {
  118.           combostatus=combostatus+cstatus[i]
  119.           i=i+1
  120.         }
  121.        return combostatus;
  122.     }
  123. }

Aca el codigo Html.

Código HTML:
<html>
<head><title>combobox</title>
<script language="javascript" src="combobox.js"></script>
</head>
<body>
	<form name="f1" method="post" action="resultado.php">
	<select name="combo0" id="combo_0" onChange="change(this);" size="3">
		<option value="0">-Categoria-</option>
		<option value="1">1</option>
		<option value="2">2</option>
	</select>
	<br /><br />
	<select name="combo1" id="combo_1" onChange="change(this)" size="6">
		<option value="value1"> </option>
	</select>
	<br /><br />
	<select name="combo2" id="combo_2" onChange="change(this);" size="5">
		<option value="value1"> </option>
	</select>
	<br /><br />
	<select name="combo3" id="combo_3" onChange="change(this);" size="6">
		<option value="value1"> </option>
	</select>
	<br />
	<input id="continuar" type="submit" value="Continuar" style="display:none">
	</form>
</body>
</html> 
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena

Última edición por Camarex; 18/03/2011 a las 23:15
  #2 (permalink)  
Antiguo 19/03/2011, 11:36
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: Ocultar Boton Submit en un ComboBox

y que tal si agregas:
Código Javascript:
Ver original
  1. if (eval("typeof("+stringa+"1)=='undefined'") && i!=0)

en la condición de mostrar y ocultar el botón.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #3 (permalink)  
Antiguo 19/03/2011, 13:16
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Ocultar Boton Submit en un ComboBox

Que tal laratik, intente como me dijiste, pero no sucede nada, todo funciona igual. Alguna otra sugerencia?

Edito: Con este cambio que sugieres, el boton de continuar no aparece , sino hasta que se elige una opcion del ultimo combobox.
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena

Última edición por Camarex; 19/03/2011 a las 13:50
  #4 (permalink)  
Antiguo 19/03/2011, 14:23
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: Ocultar Boton Submit en un ComboBox

Bien camarex, se me ocurrió otra idea, inhabilitar directamente el boton cuando indexof es 0, coloca esto al final del codigo:

Código Javascript:
Ver original
  1. /*Resto del codigo*/
  2. if(document.getElementById("combo_"+currentbox).selectedIndex == 0) {
  3.         document.getElementById("continuar").style.display = "none";
  4.     }
  5.  
  6.    return combostatus;
  7.   }
  8. }
  9. </script>

Solo como consejo, no entiendo la sobre explotación de la función eval(), me parece completamente innecesaria y desaconcejable.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #5 (permalink)  
Antiguo 19/03/2011, 15:12
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Ocultar Boton Submit en un ComboBox

Muchisimas Gracias laratik, ya funciona asi como me dijiste. Mil gracias, de verdad.

Lo unico que no hizo fue ocultar el boton al llegar al ultimo combobox y dar click en -SubCategoria- , asi que lo que hice fue poner nuevamente el codigo que me diste antes del ultimo }

y funciono perfecto. al final quedo asi.

Código Javascript:
Ver original
  1. if(document.getElementById("combo_"+currentbox).selectedIndex == 0) {
  2.         document.getElementById("continuar").style.display = "none";
  3.     }
  4.        return combostatus;
  5.  
  6.     }
  7.     if(document.getElementById("combo_"+currentbox).selectedIndex == 0) {
  8.             document.getElementById("continuar").style.display = "none";
  9.         }
  10. }

Sobre la función eval() , necesitare investigar un poquito mas, ya que el script asi me lo encontre googleando.

Ahora bien, tu cual crees que hubiera sido la mejor solucion:

1. Esconder el boton, como me ayudaste a hacerle, o

2. Inhabilitar la primer opcion de cada uno de los combobox, o de plano que no aparezca en la lista.
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena
  #6 (permalink)  
Antiguo 19/03/2011, 16:18
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: Ocultar Boton Submit en un ComboBox

si preguntas que prefiero yo... prefiero esto:
Código HTML:
Ver original
  1. <select name="combo0" id="combo_0" onChange="change(this);" size="3">
  2.         <optgroup label="-categoria-">
  3.         <option value="1">1</option>
  4.         <option value="2">2</option>
  5.         </optgroup>
  6.     </select>
claro que para manejarlo de esa forma habría que modificar demasiado tu javascript, por lo tanto utiliza el método que quieres implementar ocultando el botón.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #7 (permalink)  
Antiguo 19/03/2011, 18:20
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Ocultar Boton Submit en un ComboBox

Ok, gracias por los comentarios laratik, hasta pronto.
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena

Etiquetas: combobox, submit
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 12:05.