Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: diego1221 en 20 Julio 2015, 18:08 pm



Título: Ayuda con esta evento onload
Publicado por: diego1221 en 20 Julio 2015, 18:08 pm
Tengo este codigo

Código
  1. <script>
  2. function desaparecer()
  3. {
  4.        document.getElementById('mi_capa').style.display = 'none';
  5. }  
  6. </script>
Código
  1. <body onload="setTimeout('desaparecer()', 1000)">
  2.  
  3. <div class='mi_capa' id='mi_capa' style='z-index:99999; position:fixed; top: 0; left: 0; overflow:visible; width:100%; height:100%; background: #F4F8F9;'>
  4. <div style='width:600px; height:400px; position:absolute; top:50%; left:50%; margin-left:-300px; margin-top:-200px; padding:100px 30px 0px 0px; color:#000000; font-size:20px; line-height:20px; text-align:center;'>
  5.  
  6. <form action="validar-password.php" method="post">
  7. Escribe una clave:
  8. <input type=password name="clave">
  9. <input type="submit" value="Enviar">
  10. </form>
  11. </div></div>


lo que quiero es que cuando pulse el  botón, se ejecute la acion del body onload sin nesecidad de que sea con el tiempo, es decier que cuando pulse el boton, el body me carge, llevo muchi tiempo intentando por no he podido por que en el form hay una action y no se que ponerle para que el body onload se ejecute.

Gracias por su ayuda

Mod: Obligatorio el uso de etiquetas GeSHi.


Título: Re: Ayuda con esta evento onload
Publicado por: ivancea96 en 20 Julio 2015, 19:42 pm
Al boton ponle un onclick que llame a otra función.

No entendí bien. ¿Quieres que al pulsar el boton, se elimine el timeout? Para eliminar timeout, basta poner clearTimeout(id). Ese ID es el que retorna setTimeout(). Así que la idea es que body onclick llame a una función que hagas. Poner el setTimeout directamente no me parece una buena práctica.


Título: Re: Ayuda con esta evento onload
Publicado por: #!drvy en 21 Julio 2015, 15:18 pm
Aunque tampoco entiendo que es lo que quieres hacer, creo que lo que intentas es ocultar el formulario cuando este se enviá. Si es asi, solo te hace falta esperar un evento de envío sobre el formulario.

Código
  1.  
  2. <div class='mi_capa' id='mi_capa' style='z-index:99999; position:fixed; top: 0; left: 0; overflow:visible; width:100%; height:100%; background: #F4F8F9;'>
  3. <div style='width:600px; height:400px; position:absolute; top:50%; left:50%; margin-left:-300px; margin-top:-200px; padding:100px 30px 0px 0px; color:#000000; font-size:20px; line-height:20px; text-align:center;'>
  4.    <form id='formulario' action="validar-password.php" method="post">
  5.        Escribe una clave:
  6.        <input type=password name="clave">
  7.        <input type="submit" value="Enviar">
  8.    </form>
  9. </div></div>
  10.  
  11. <script type='text/javascript'>
  12.  
  13. document.getElementById('formulario').addEventListener('submit', function(event){
  14.    document.getElementById('mi_capa').style.display = 'none';
  15. });
  16.  
  17.  
  18. </body>

Si quieres que tome algo de tiempo, cambia el JS así:

Código
  1. <script type='text/javascript'>
  2.  
  3. document.getElementById('formulario').addEventListener('submit', function(event){
  4.    event.preventDefault();
  5.  
  6.    document.getElementById('mi_capa').style.display = 'none';
  7.  
  8.    setTimeout(function(){
  9.        document.getElementById('formulario').submit();
  10.    }, 1000);
  11. });
  12.  
  13. </script>

Saludos


Título: Re: Ayuda con esta evento onload
Publicado por: Usuario Invitado en 21 Julio 2015, 16:43 pm
Si quieres que desaparezca  con un efecto, solo agrega una clase CSS:

Código
  1. .form-hidden {
  2.    opacity: 0;
  3.    height: 0;
  4.    visibility: hidden;
  5. }

Dado que display no es animable, le hacemos un height: 0 y actúa como un display: none. El formulario, debe tener la propiedad transition.

Demo JSFiddle (http://jsfiddle.net/161vbh4k/1/)