Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/03/2015, 20:52
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Ocultar y mostrar campos via select

Una manera sencilla de hacer esto es utilizando una clase CSS que haga visible al elemento.

Primero, oculta a ambas divisiones:

Código CSS:
Ver original
  1. div{
  2.     display: none;
  3. }

Luego, crea la clase que hará visible al elemento al que se la apliques:

Código CSS:
Ver original
  1. .visible{
  2.     display: block;
  3. }

La estructura de tu combo debería de ser más o menos así:

Código HTML:
Ver original
  1. <select name="elige" id="elige">
  2.     <option value="">Seleccione una opción</option>
  3.     <option value="opc1">Específico</option>
  4.     <option value="opc2">Comercial</option>

Como verás, asigné los identificadores de las divisiones a los valores de las opciones, esto para que cuando se elija una opción, se tome a la división correspondiente al valor de la opción seleccionada y así podamos mostrarla. También creé una opción que por defecto será la primera y le indicará al usuario lo que debe de hacer.

Ahora, crea una función que se ejecutará cuando se elija una opción del combo:

Código Javascript:
Ver original
  1. document.querySelector("#elige").addEventListener("change", function(){
  2.     if (this.value.length){
  3.         if (document.querySelector(".visible").length){
  4.             document.querySelector(".visible").className = "";
  5.         }
  6.         document.querySelector("#" + this.value).className = "visible";
  7.     }
  8. }, false);

Cuando se elija una opción del combo, primero verificamos que su valor tenga contenido o extensión, que para el caso es lo mismo, luego de esto, verificamos si existen elementos con la clase 'visible' (esta verificación es útil solo la primera vez, para evitar que se generen mensajes de error en la consola, pues al principio, ningún elemento posee esa clase) y de haber, se la quitamos. Finalmente, asignamos dicha clase al elemento cuyo identificador corresponda con la opción seleccionada.

La ventaja de hacerlo así, es que puedes tener N divisiones y el funcionamiento siempre será el mismo.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand