Foros del Web » Programando para Internet » Javascript »

mostrar/ocultar inputs segun boton

Estas en el tema de mostrar/ocultar inputs segun boton en el foro de Javascript en Foros del Web. Hola amigos, me acabo de registrar en el foro porqué he visto que normalmente la gente es muy amable con los nuevos en la programación. ...
  #1 (permalink)  
Antiguo 04/01/2012, 11:30
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 11 meses
Puntos: 14
mostrar/ocultar inputs segun boton

Hola amigos, me acabo de registrar en el foro porqué he visto que normalmente la gente es muy amable con los nuevos en la programación.
esta es mi duda : Yo quería hacer un formulario en que salieran unos botones y tu le dieses por ejemplo al botón : nombre y te apareciera el input para poner el nombre.
He tratado de hacerlo, asignandóle unos valores a un input hidden según que botón pulsas (nombre, correo o informacion adicional). Pero no me funciona, alguien sabria decirme cual es el problema? Aqui dejo mi código completo :
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Vipefy invisible </title>
<head>
<script type="text/javascript">



function mostrarcampos(){
if (document.perfil.hidden.value = showname){
document.getElementById('nameformdiv').style.display='block';
}else if{
document.perfil.hidden.value = showmail){
document.getElementById('mailformdiv').style.display='block';
}else if{
document.perfil.hidden.value = showadicional){
document.getElementById('opcionalformdiv').style.display='block';
}
}
}
}

</script>
<style>	  

	  </style>
	  </head>


	 



<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="perfil" onload=>
<input type="button" value="Nombre" id="nombre" onclick="document.perfil.hidden.value=showname" /><br>
<input type="button" value="Correo electronico" id="mail" onclick="document.perfil.hidden.value=showmail" /><br>
<input type="button" value="Informacion adicional" id="opcional" onclick="document.perfil.hidden.value=showadicional" />
<input type="hidden" value="" name="hidden" id="hidden" />

</form>

<div id="nameformdiv" style="display.none;">
<p>Nombre </p>
<p><input type="text" id="nameformdiv.name" class="input" /></p>
<p>Apellidos </p>
<p><input type="text" id="nameformdiv.surname" class="input" /></p>
</div>


<div id="mailformdiv" style="display.none;">
<p>Correo Electronico</p>
<p><input type="text" id="mailformdiv.correo" class="input" /></p>
</div>


<div id="opcionalformdiv" style="display.none;">
<p>Ciudad de residencia</p>
<p><input type="text" id="opcionalformdiv.ciudad" class="input" /></p>
</div>

</body>
</html>
Si me pudieráis ayudar, os estaria realmente agradecido!
  #2 (permalink)  
Antiguo 04/01/2012, 12:51
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: mostrar/ocultar inputs segun boton

Aunque me parece que asignar el valor a un hidden para luego evaluarlo con js es dar mucho rodeo, creo que no funciona por la manera en que asignas y comparas:

onclick="document.perfil.hidden.value=showname"
debe ser
onclick="document.perfil.hidden.value='showname'"

if (document.perfil.hidden.value = showname){
debería ser
if (document.perfil.hidden.value = 'showname'){


puesto que showname tal cual al momento de evaluar o asignar es una cadena, no una variable u objeto.
  #3 (permalink)  
Antiguo 04/01/2012, 13:16
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 11 meses
Puntos: 14
Respuesta: mostrar/ocultar inputs segun boton

Primero de todo, muchas gracias por el tiempo en analizar el código y ayudarme.

Después de esto, he hecho lo que me has dicho y sigue sin funcionar, en el código que he puesto antes hay una línea que está incompleta y es esta:
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="perfil" onload="mostrarcampos()";>

El resto del código está igual pero corregido como me has dicho, sabes que podria ser? gracias :)


PD: He dado todo este rodeo porqué no he encontrado otra forma de validar los button para hacerlo con una sola función, pero si supieras una forma estaría abierto a nuevas posibilidades de escribir el código.
  #4 (permalink)  
Antiguo 04/01/2012, 13:48
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: mostrar/ocultar inputs segun boton

Si lo que quieres es que al dar clic en un botón aparezca un campo, debería ser algo así:


<input type="button" onclick="muestra('nombre')"><input type="text" id="nombre" style="display:none;">

y en javascript la función muestra:

function muestra(id){
document.getElementById(id).style='block';
}

Igualmente puedes mostrar un div o cualquier elemento con id, ya sea un div o botón, y también es posible complicar algo el asunto con la opción de mostrar / ocultar con la misma función, pero por el momento con esto creo que te puedes dar una idea.
  #5 (permalink)  
Antiguo 04/01/2012, 14:12
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 11 meses
Puntos: 14
Respuesta: mostrar/ocultar inputs segun boton

De acuerdo, lo he hecho así pero ahora no me aparece el botón, este es el código entero para que puedas probarlo en el navegador (solo lo he aplicado en el Nombre, cuándo lo tenga solucionado lo aplicaré al correo y a la información adicional, este es el código completo tal y como está ahora :
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Vipefy invisible </title>
<head>
<script type="text/javascript">

function muestra(nombre){
document.getElementById(nombre).style='block';
}


</script>
<style>	  

	  </style>
	  </head>


	 



<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="perfil" onload="mostrarcampos()";>
<input type="button" onclick="muestra('nombre')" id="nombre" value="Nombre" style="display:none;">
<input type="button" value="Correo electronico" id="mail" onclick="document.perfil.hidden.value='showmail'" /><br>
<input type="button" value="Informacion adicional" id="opcional" onclick="document.perfil.hidden.value='showadicional'" />
<input type="hidden" value="" name="hidden" id="hidden" />

</form>

<div id="nameformdiv" style="display.none;">
<p>Nombre </p>
<p><input type="text" id="nameformdiv.name" class="input" /></p>
<p>Apellidos </p>
<p><input type="text" id="nameformdiv.surname" class="input" /></p>
</div>


<div id="mailformdiv" style="display.none;">
<p>Correo Electronico</p>
<p><input type="text" id="mailformdiv.correo" class="input" /></p>
</div>


<div id="opcionalformdiv" style="display.none;">
<p>Ciudad de residencia</p>
<p><input type="text" id="opcionalformdiv.ciudad" class="input" /></p>
</div>

</body>
</html>
  #6 (permalink)  
Antiguo 04/01/2012, 15:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 98
Antigüedad: 13 años
Puntos: 29
Respuesta: mostrar/ocultar inputs segun boton

Me parece que esto es lo que buscas:
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Vipefy invisible </title>
<head>

	  </head>

<body>
<style>

.no {
display:none;
}
.si {
display:block;
}
</style>

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" name="perfil" >
<input type="button" value="Nombre" id="nombre" onclick="javascript:nameformdiv.className='si';" /><br>
<input type="button" value="Correo electronico" id="mail" onclick="javascript:mailformdiv.className='si';" /><br>
<input type="button" value="Informacion adicional" id="opcional" onclick="javascript:opcionalformdiv.className='si';" />
<input type="hidden" value="" name="hidden" id="hidden" />


<div id="nameformdiv" class="no" >
<p>Nombre </p>
<p><input type="text" id="nameformdiv.name" class="input" /></p>
<p>Apellidos </p>
<p><input type="text" id="nameformdiv.surname" class="input" /></p>
</div>


<div id="mailformdiv" class="no" >
<p>Correo Electronico</p>
<p><input type="text" id="mailformdiv.correo" class="input" /></p>
</div>

<div id="opcionalformdiv" class="no" >
<p>Ciudad de residencia</p>
<p><input type="text" id="opcionalformdiv.ciudad" class="input" /></p>
</div>

</form>
</body>
</html>
  #7 (permalink)  
Antiguo 04/01/2012, 15:24
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 11 meses
Puntos: 14
Respuesta: mostrar/ocultar inputs segun boton

Wow, no habia pensado esa posibilidad para hacerlo, me funciona a la perfección.
Muchisimas gracias! y muchas gracias también a ocp001a, ya está resuelto el tema :)

Etiquetas: formulario, funcion, html, input, inputs, mostrar-ocultar, php, botones
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 08:38.