Ir al contenido principal

Abrir y cerrar formulario de correo en ventana tipo popup con jquery

   Este post está relacionado con el anterior sobre enviar formulario de correo en segundo plano, en este voy a hablar sobre como abrir un div que contiene un formulario de correo, tipo popup o, tal vez mejor, ventana modal. En esta página sobre taller del automóvil tengo un formulario de correo oculto que se muestra al pinchar en un enlace. Intento minimizar el scroll de la página para mostrar la información. Me parece que es mejor mostrar toda la información posible moviendo la barra del scroll lo menos posible. Y, en este caso, me parecía que incluir un formulario visible recargaría demasiado la página. Voy a intentar explicar cómo mostrar y ocultar una ventana, que contiene un formulario de correo, usando jQuery.

   Primero, el código CSS:


/*damos forma y posición al div formulario que, por defecto, estará oculto*/
 #formulario{
    display:none;
    position:absolute;
    top: 50%;
    left: 30%;
    height:500px;
    width:450px;
    padding:0px 20px 0px 20px;
    background-color: #929EE8;
    filter:alpha(opacity=90);
    border: 6px solid #8FB5C1; 
    -moz-border-radius:15px; 
    -webkit-border-radius:15px; 
    border-radius:15px;
    box-shadow: 10px 10px 15px #333;;
   -webkit-box-shadow: 10px 10px 15px #333;
   -moz-box-shadow: 10px 10px 15px #333;
    z-index:5000;
}
/*damos forma y posición al botón de envío*/
#submit_button {
    width: 100px;
    height:50px;
    font-size:1.3em;
    background-color:#333;
    color:#FFF;
    border:1px solid;
    display:block;
    float:right;
    margin-bottom:0px;
    margin-right:6px;
    background-color:#CCC;
    -moz-border-radius:8px;
    -webkit-border-radius:8px;
    border-radius:8px;
}
/*cambiamos el color del botón de envío al pasar el puntero por encima*/
#submit_button:hover {
    background-color:#666;
}
/*ponemos un borde a los campos input y textarea del formulario*/
input, textarea {border: 1px solid;}
/*posicionamos el botón cerrar*/
.boton_cerrar {
    background:url(images/close.png) 1px 1px no-repeat;
    float:right;
    width:33px;
    height:33px;
    cursor:pointer;
}
/*cambiamos el botón de cerrar al pasar el puntero por encima*/
.boton_cerrar:hover{
    background:url(images/close_hover.png) 1px 1px no-repeat;
    float:right;
    width:33px;
    height:33px;
    cursor:pointer;
}

   Lo siguiente, el código HTML:


<div id="right" style="font-size:1em;color:#000;">

Puede contactar con nosotros en los teléfonos 985xxxxxx, enviando un email a través de su cliente de correo a:<a href="mailto:contacto@empresa.com">contacto@talleresguadamia.com</a></p>
<p>o rellenando<a href="#" onclick="$('#formulario').fadeIn(700); enviamensaje();"> ESTE FORMULARIO</a></p><br />
</div>

<div id="formulario">

<div class="boton_cerrar" title="cerrar" onclick="$('#formulario').fadeOut(300);"></div>
<div style="clear:both;"></div>
<form id="myForm" action="enviarcorreo.php" method="post">
<p><label>Su nombre:<input name="nombre" id="nombre" size="40" MAXLENGTH="40" TYPE="TEXT" VALUE=""/></label></p>
<br />
<p><label>Su E-mail:<input name="mail" id="mail" size="40" MAXLENGTH="40" TYPE="TEXT" placeholder="micorreo@mail.com" VALUE=""/></label></p>
<br />
<p>Escriba su mensaje y pulse enviar<textarea name="mensaje" id="mensaje" ROWS=10 COLS=80 style="width: 340px; height: 150px;" ></TEXTAREA></p>
<p><input type="submit" id="submit_button" name="Submit" value="Enviar"/></p>
<div id="ajax_loader"><img id="loader_gif" src="loader.gif" style=" display:none;"/></div>
</form>

</div>
   La clave está en onclick:  
onclick="$('#formulario').fadeIn(700); enviamensaje();"  
que nos mostrará el formulario y llamará a la función 'enviamensaje()', al pinchar en el enlace 'ESTE FORMULARIO' (en cuanto a la función 'enviamensaje()' leer este post). Y en onclick="$('#formulario').fadeOut(300);" que ocultará en formulario al pinchar en el botón cerrar. Como ya comenté en otros posts, es necesario incluir, entre los "HEAD" de nuestro HTML el archivo jQuery.

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod