Foros del Web » Programando para Internet » Javascript »

Ocultar formulario javascript

Estas en el tema de Ocultar formulario javascript en el foro de Javascript en Foros del Web. Hola, Tengo un <div> y en el interior un formulario compuesto por 4 <input> de texto, dicho <div> pretendo ocultarlo cuando se hace click fuera ...
  #1 (permalink)  
Antiguo 12/01/2010, 12:36
 
Fecha de Ingreso: enero-2010
Mensajes: 9
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Ocultar formulario javascript

Hola,

Tengo un <div> y en el interior un formulario compuesto por 4 <input> de texto, dicho <div> pretendo ocultarlo cuando se hace click fuera del mismo, en cualquier lugar de la página excepto dentro del <div> donde se encuentra el formulario.
Si la función de ocultar la maneja el evento onclick de <body> o de <html>, al hacer click en cualquier lugar de la página el <div> con el formulario desaparece, el problema es que si hago clik dentro del mismo formulario, logicamente también desaparece.

Estoy atascado, haber si alguien puede ayudarme con este problema.

Saludos y gracias.
  #2 (permalink)  
Antiguo 12/01/2010, 14:00
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años
Puntos: 2
Respuesta: Ocultar formulario javascript

Puedes realizar una comprobación de qué objeto es el que está generando el evento onclick exactamente, y no ocultarlo cuando el evento venga del formulario. ¿No podrías mostrar el código javascript?
  #3 (permalink)  
Antiguo 12/01/2010, 14:01
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Ocultar formulario javascript

pudes mostrar la funcion que colocas dentro del onclick, osea cuando vos haces click sobre, eso va a una funcion en head bien,
para ocultar algo debe colocar lo siguiente:

document.getElementById('nombre_a_ocultar).style.d isplay = 'none';
  #4 (permalink)  
Antiguo 12/01/2010, 14:28
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años
Puntos: 2
Respuesta: Ocultar formulario javascript

La solución más simple que se me ocurre es que no hagas la comprobación desde el el nivel del body o el html de la página, sino a nivel de los div que tenga el cuerpo de esta página, es decir en cada div coloca la comprobación de si se hizo click sobre él y en el div que contenga al formulario omite ocultarlo. Es decir algo como esto:

Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Prueba 1</title>
  6. <script type="text/javascript">
  7. function comprueba(objOrigen) {
  8.     document.getElementById("divPanel").style.display = "none";
  9. }
  10. </script>
  11. </head>
  12.  
  13. <body>
  14. <div onclick="comprueba(this)">Comentario</div>
  15. <div id="divPanel">
  16. <form>
  17. Texto: <input type="text" name="Texto" /> <input type="button" name="Boton" value="OK" />
  18. </form>
  19. </div>
  20. <div onclick="comprueba(this)">Otro comentario</div>
  21. </body>
  22. </html>
  #5 (permalink)  
Antiguo 12/01/2010, 15:53
 
Fecha de Ingreso: enero-2010
Mensajes: 9
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ocultar formulario javascript

<input id="initcoment" onfocus="comentInitHide();" type="text" value="escribe tu comentario"/>
<div id="formulario">
<input id="nombre" type="text" />
<input id="email" type="text" />
<input id="contenido" type="text" />
<input type="button"/>
</div>


//funcion para ocultar initcoment, mostrar el formulario y poner el foco en contenido
comentInitHide: function() {
var input = this.$("initcoment");
input.style.display = "none";
var comform = this.$("formulario");
comform.style.display = "inline";
var txtcontent = this.$("contenido");
txtcontent.focus();
}
,

//ahora una vez mostrado el formulario, si el usuario hace clic fuera del formulario, este deberia esconderse y mostrar de nuevo initcoment:

comentFormHide: function() {
var txtcontent = this.$("contenido");
txtcontent .style.display = "none";
var input = this.$("initcoment");
input.style.display = "inline";

}
,

//el problema es que no se donde colocar esta función, ya que si la pongo en el evento onclick de body por ejemplo, cuando hago clic en <input id="nombre" type="text" />
por ejemplo, ocultaria el formulario.
  #6 (permalink)  
Antiguo 12/01/2010, 16:09
 
Fecha de Ingreso: enero-2010
Mensajes: 9
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ocultar formulario javascript

entiendo atoBeto, gracias
  #7 (permalink)  
Antiguo 12/01/2010, 16:15
 
Fecha de Ingreso: enero-2010
Mensajes: 9
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ocultar formulario javascript

el problema es que los paneles no ocupan todo el ancho del navegador(según la pantalla), entonces ambos laterales pertenecen a <html>
  #8 (permalink)  
Antiguo 13/01/2010, 03:12
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Ocultar formulario javascript

hola errotiko,

te comento otra posible solución, a ver que te parece.
Creas una variable global llamada dentroFuera (por ejemplo). Esta variable debe ser cero cuando el raton está fuera del div y es uno cuando el ratón esta dentro del div (con onmouseover y onmouseout)
en el body creas el evento onclick pero que pregunte por el estado de la variable dentroFuera. Si es cero que oculte el div, si es uno que no lo oculte.
De esta manera se oculta si haces click fuera del div pero no se oculta cuando haces click dentro:
--------------------------------------------
<script type="text/javascript">
var dentroFuera = 0;
function ocultarDiv()
{
if(dentroFuera == 0)
document.getElementById('el_div').style.display='n one';

}
</script>
------------------------------------------------
<body onclick="ocultarDiv();">
<div onmouseover="dentroFuera=1;" onmouseout="dentroFuera=0;" id="el_div">
.....
</div>
------------------------------------------------

salu2
  #9 (permalink)  
Antiguo 13/01/2010, 04:59
 
Fecha de Ingreso: enero-2010
Mensajes: 9
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ocultar formulario javascript

gracias ceSharp me parece una excelente solución, lo pruebo y te comento.
  #10 (permalink)  
Antiguo 14/01/2010, 09:13
Avatar de atoBeto  
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años
Puntos: 2
Respuesta: Ocultar formulario javascript

Buena solución también :)

Etiquetas: formulario
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 10:50.