Foros del Web » Programando para Internet » Javascript »

Mostrar campos con cambio de combobox

Estas en el tema de Mostrar campos con cambio de combobox en el foro de Javascript en Foros del Web. Hola Tengo el siguiente código, funciona perfectamente si cambio a la primera opción, pero lo que deseo es que cada opcion despliegue un campo y ...
  #1 (permalink)  
Antiguo 20/08/2012, 14:16
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Pregunta Mostrar campos con cambio de combobox

Hola Tengo el siguiente código, funciona perfectamente si cambio a la primera opción, pero lo que deseo es que cada opcion despliegue un campo y oculte otro.

Código Javascript:
Ver original
  1. window.onload = function() {
  2.         var eSelect = document.getElementById('transfer_reason');
  3.         var optOtherReason = document.getElementById('otherdetail');
  4.         eSelect.onchange = function() {
  5.             if(eSelect.selectedIndex === 1) {
  6.                 optOtherReason.style.display = 'block';
  7.             } else {
  8.                 optOtherReason.style.display = 'none';
  9.             }
  10.         }
  11.     }

Código HTML:
Ver original
  1. <select name="nofarmaco_prev" id="transfer_reason2" style="width:100%;float:left;margin-right:10px; " onchange="document.getElementById('otherdetail2').style.display = (this.selectedIndex === 1) ? 'block' : 'none';">
  2.                 <option value="0">No</option>
  3.                 <option value="1">Si</option>
  4.              </select>
  5.  
  6. <div id="otherdetail2" style="display: none;">
  7.     <table class="nuevo_paciente" width="100%">
  8. <tr>
  9. <td  align=center>
  10. <h2>¿Tipo de tratamiento?</h2>
  11. </td>
  12. </tr>
  13.     <tr>
  14.        
  15.         <td>
  16.             <select name="farmaco_prev" id="transfer_reason2" style="width:100%;float:left;margin-right:10px; " >
  17.                 <option value="1">Farmacológico</option>
  18.                 <option value="0">No Farmacológico</option>
  19.                 <option value="2">Ambas Farmacológico/No Farmacológico</option>
  20.              </select>
  21.           </td>
  22.     </tr>
  23.  
  24.  </table>
  25.    
  26.     </div>

Espero su ayuda, Saludos
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #2 (permalink)  
Antiguo 20/08/2012, 14:48
 
Fecha de Ingreso: agosto-2012
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Mostrar campos con cambio de combobox

un consejo primero en html no es muy recomendable tener 2 id repetidos ya que el js siempre va a tomar el primer elemento que encuentre con ese id (hablo de los transfer_reason2)

lo otro podrias explicar bien tu problema ya que no le entendi muy bien
  #3 (permalink)  
Antiguo 20/08/2012, 15:04
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Mostrar campos con cambio de combobox

Tengo un select con dos opciones.

Deseo que al abrir la primera opcion del select se despliegue una tabla, y si selecciono la segunda despliegue otra tabla y oculte la que mostraba anteriormente.

Ejm:
<select>
<option>Casas</option>
<option>Apartamentos</option>
</select>

Cuando aparece el HTML se ve primero "<option>Casas</option>"

Y ahi muestra un cuadro debajo con X's información contenida en un "div"

Si le doy a "<option>Apartamentos</option>" se oculta el div que despliega casas y se abre uno nuevo que pertenece a "<option>Apartamentos</option>"

Esto funciona de forma contraria, si vuelvo a presionar "<option>Casas</option>" Se aparece el div de casas y se oculta el div de apartamentos.
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #4 (permalink)  
Antiguo 20/08/2012, 15:09
 
Fecha de Ingreso: enero-2012
Ubicación: Caracas
Mensajes: 75
Antigüedad: 12 años, 3 meses
Puntos: 21
Respuesta: Mostrar campos con cambio de combobox

esta funcion tal vez sea lo que buscas:

Código Javascript:
Ver original
  1. function mostrar_ocultar(cadena_ids,opcion){
  2.     var tmp = cadena_ids.split(',')
  3.     for(i=0; i<tmp.length; i++){
  4.         document.getElementById(tmp[i]).style.display=(opcion=='ocultar'?'none':'block');
  5.    }
  6. }


en el html:

Código HTML:
Ver original
  1. .
  2. .
  3. .
  4. .
  5. <select name="select1" id="select1" onchange="mostrar_ocultar('elemento1,elemento2,elemento3,elemento4','ocultar');mostrar_ocultar('elemento6,elemento7,elemento8,elemento9','mostrar');">
  6. .
  7. .
  8. .
  9. .

avisas cualquier duda....


nota:
cadena_ids es una lista de "id" de elementos separadas por coma....

Última edición por beeman00; 20/08/2012 a las 15:11 Razón: Completando....
  #5 (permalink)  
Antiguo 20/08/2012, 15:18
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Mostrar campos con cambio de combobox

El HTML quedaría de esta forma?

No comprendo como hacer que funcione bien.

Código HTML:
Ver original
  1. <select name="select1" id="select1" onchange="mostrar_ocultar('elemento1,elemento2,elemento3,elemento4','ocultar');mostrar_ocultar('elemento6,elemento7,elemento8,elemento9','mostrar');">
  2. <option id="elemento1">Casa</option>
  3. <option id="elemento2">Casa2</option>
  4. <div id="elemento7">asdas</div>
  5. <div id="elemento6">123123</div>
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #6 (permalink)  
Antiguo 20/08/2012, 15:46
 
Fecha de Ingreso: enero-2012
Ubicación: Caracas
Mensajes: 75
Antigüedad: 12 años, 3 meses
Puntos: 21
Respuesta: Mostrar campos con cambio de combobox

sorry... no habia visto tu comentario, el hecho es que vas a mostrar u ocultar elementos segun la opcion seleccionada.

a la funcion que te di le hace falta esto:

Código Javascript:
Ver original
  1. function mostrar_ocultar(valor){
  2.     var cadena_ids='';
  3.     switch(valor){
  4.          case 1:cadena_ids = 'elemento1|block,elemento2|none,elemento3|block';
  5.          case 2:cadena_ids = 'elemento1|none,elemento2|block,elemento3|ocultar';
  6.     }
  7.     var tmp = cadena_ids.split(',')
  8.     for(i=0; i<tmp.length; i++){
  9.         document.getElementById(tmp[i].split('|')[0]).style.display=tmp[i].split('|')[1];
  10.    }
  11. }

y en html:

Código HTML:
Ver original
  1. .
  2. .
  3. .
  4. <select name="select1" id="select1" onchange="mostrar_ocultar(this.value);">
  5. .
  6. .
  7. .
  8. .
  #7 (permalink)  
Antiguo 20/08/2012, 15:53
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Mostrar campos con cambio de combobox

No, aun asi no funciona

Código Javascript:
Ver original
  1. function mostrar_ocultar(valor){
  2.     var cadena_ids='';
  3.     switch(valor){
  4.          case 1:cadena_ids = 'elemento1|block,elemento2|none,elemento3|block';
  5.          case 2:cadena_ids = 'elemento1|none,elemento2|block,elemento3|ocultar';
  6.     }
  7.     var tmp = cadena_ids.split(',')
  8.     for(i=0; i<tmp.length; i++){
  9.         document.getElementById(tmp[i].split('|')[0]).style.display=tmp[i].split('|')[1];
  10.    }
  11. }

Código HTML:
Ver original
  1. <select name="select1" id="select1" onchange="mostrar_ocultar(this.value);">
  2. <option id="elemento1">Casa</option>
  3. <option id="elemento2">Casa2</option>
  4.  <div id="elemento3">asdas</div>
  5. <div id="elemento3">3215</div>
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #8 (permalink)  
Antiguo 20/08/2012, 16:05
 
Fecha de Ingreso: enero-2012
Ubicación: Caracas
Mensajes: 75
Antigüedad: 12 años, 3 meses
Puntos: 21
Respuesta: Mostrar campos con cambio de combobox

Cita:
Iniciado por dvbeaumont Ver Mensaje
No, aun asi no funciona

Código Javascript:
Ver original
  1. function mostrar_ocultar(valor){
  2.     var cadena_ids='';
  3.     switch(valor){
  4.          case '1':cadena_ids = 'elemento1|block,elemento2|none,elemento3|block';
  5.          case '2':cadena_ids = 'elemento1|none,elemento2|block,elemento3|none';
  6.     }
  7.     var tmp = cadena_ids.split(',');
  8.     for(i=0; i<tmp.length; i++){
  9.     alert(tmp);
  10.     alert(tmp[i].split('|')[0]);
  11.         document.getElementById(tmp[i].split('|')[0]).style.display=tmp[i].split('|')[1];
  12.    }
  13. }

Código HTML:
Ver original
  1. <select name="select1" id="select1" onchange="mostrar_ocultar(this.value);">
  2. <option  value="1">Casa</option>
  3. <option  value="2">Casa2</option>
  4.  
  5.  <div id="elemento1">asdas</div>
  6. <div id="elemento2">3215</div>
  7. <div id="elemento3">fgs dfgsd fgsdfgsdf gsd gsdg sdg</div>
listo probado y todo.

no le estabas colocando valor a las opciones
  #9 (permalink)  
Antiguo 20/08/2012, 16:29
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Mostrar campos con cambio de combobox

No hace el cambio, me oculta el

elemento1 y deja el elemento2

Pero no hace cambios, o sea si le doy luego al value=1 no oculta el elemento2 ni visceversa
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #10 (permalink)  
Antiguo 20/08/2012, 16:33
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Mostrar campos con cambio de combobox

Lo consegui por internet.

Ejm para que la gente pueda usarlo:

Código Javascript:
Ver original
  1. function toggleSubmit(obj){
  2.  
  3. count=0
  4. while(document.getElementById("d"+count)){
  5. document.getElementById("d"+count).style.display="none"
  6. count++
  7. }
  8. document.getElementById("d"+obj.selectedIndex).style.display="block"
  9.  
  10. }

Código HTML:
Ver original
  1. <SELECT id="ptype" NAME="ptype" onchange="toggleSubmit(this)">
  2. <option value="Contract">Contract</option>
  3. <option value="Direct_hire">Direct Hire</option>
  4.  
  5. <div id="d0" style="display:block">NUMBER OF CONTRACTORS</div>
  6. <div id="d1" style="display:none">TARGET COMPENSATION</div>

Muchas Gracias
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com

Etiquetas: campos, combobox, funcion, 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 17:09.