Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Phantasy en 28 Noviembre 2013, 16:58 pm



Título: Formulario de registro dentro de una imagen diseñada [POP-UP]
Publicado por: Phantasy en 28 Noviembre 2013, 16:58 pm
Muy buenas, no se si el tema lo describe totalmente. De todas formas lo explico, necesito ayuda para crear un código, que su función es:

Al pinchar en un botón, se abra un pop-up con una imagen dentro y unos cuadros de formulario para registrarse, la pagina que había anteriormente quedara con un color opacido. Para salir del formulario pincharemos afuera de este y volverá al estado normal, rellenaremos al formulario y lo enviaremos o lo cerramos pinchando en la X.

Solamente necesito la parte de pinchar el botón, aparecer el pop-up con la imagen, por lo demás (formulario, etc) me ocupo yo.

Gracias y un saludo.


Título: Re: Formulario de registro dentro de una imagen diseñada [POP-UP]
Publicado por: EFEX en 28 Noviembre 2013, 17:12 pm
Con javascript podes hacerlo... pero que llevas hasta ahora?


Título: Re:
Publicado por: alario0 en 28 Noviembre 2013, 17:20 pm
Mirate window.open en un evento onclick de javascript


Título: Re: Formulario de registro dentro de una imagen diseñada [POP-UP]
Publicado por: Phantasy en 28 Noviembre 2013, 17:21 pm
Lo estoy haciendo con javascript y JQ.

Parte de JQ

Código:
<script type="text/javascript">
$(document).ready(function(){
  $('#open').click(function(){
$('#popup').fadeIn('slow');
$('body').css('opacity', '0.5');
return false;
});

$('#close').click(function(){
$('#popup').fadeOut('slow');
$('body').css('opacity', '1');
return false;
});
});
</script>

Parte CSS

Código:
<style>
#content {
    width: 900px;
    margin: 0px auto;
    padding: 2em 1em;
}

#column-right {
background-color: #EBE9EA;
    border: 1px solid #D2D2D2;
    border-radius: 8px 8px 8px 8px;
    float: right;
    min-height: 225px;
    margin-bottom: 10px;
    overflow: hidden;
    text-align: center;
    width: 180px;
padding-top:10px;
}

#popup {
left: 0;
    position: absolute;
    top: 0;
    width: 100%;
    z-index: 1001;
}

.content-popup {
margin:0px auto;
margin-top:50px;
padding:10px;
width:735px;
min-height:290px;
/*border-radius:4px;*/
background:url(pop-up.png);
background-repeat:no-repeat;
/*box-shadow: 0 2px 5px #666666;*/
}

.close {
position:relative;
left:610px;
}
</style>

Parte HTML

Código:
<div id="popup" style="display: none;">
    <div class="content-popup">
        <div class="close"><a href="#" id="close">X</a></div>
        <div>
            <div style="float:left; width:100%;">
    </div>
        </div>
    </div>
</div>

El tema es que lo hace bien, pero el body me lo pone en opacidad 0.5 y encima me deja interactuar con la pagina de atrás, y yo lo quiero con un gris opaco, el cual cuando se pinche afuera de la imagen se vaya a la pagina en la que estaba o dándole a la X. Y se le doy a enviar me lleva a otra pagina dando la enhorabuena por el registro.


Título: Re: Formulario de registro dentro de una imagen diseñada [POP-UP]
Publicado por: Phantasy en 28 Noviembre 2013, 18:26 pm
Totalmente terminado a falta de pulsar fuera del POP-UP y cerrarlo.


Título: Re: Formulario de registro dentro de una imagen diseñada [POP-UP]
Publicado por: EFEX en 28 Noviembre 2013, 18:28 pm
Haber por partes, queres quitarle la opacidad? comentado las lineas...

Código
  1. $('#open').click(function(){
  2. ...
  3. /* $('body').css('opacity', '0.5'); */
  4. ...
  5. });
  6. $('#close').click(function(){
  7. ...
  8. /* $('body').css('opacity', '1'); */
  9. ...
  10. });
  11.  

Si queres cambiar el color de fondo del pop-up podes hacerlo con css.. te combiene tambien definir alto y ancho del popup.

Código
  1. #popup {
  2. ...
  3. background-color: #999999;
  4. width: 400px;
  5. height: 300px;
  6. margin-left: 50px; /* Utiliza margin-left,-right, -top, -bottom para posicionar el popup por la pantalla */
  7. margin-top: 0px;
  8. ...
  9. }
  10. .close { /* Mostrar la X en la parte superior a la derecha */
  11. position: absolute;
  12. top: 0;
  13. right: 0;
  14. }
  15.  

"...el cual cuando se pinche afuera de la imagen se vaya a la pagina en la que estaba o dándole a la X.."
Esta es una forma de hacerlo, pero lo bueno es que si haces click dentro del contenedor popup no desaparece.

Código
  1. $(document).ready(function(){
  2. //Codigo
  3. });
  4. $(document).mouseup(function (event)
  5. {
  6. var container = $("#popup");
  7.  
  8. if (!container.is(event.target) // if the target of the click isn't the container...
  9. && container.has(event.target).length === 0) // ... nor a descendant of the container
  10. {
  11. $('#popup').fadeOut('slow');
  12. }
  13. });
  14.  

"..Y se le doy a enviar me lleva a otra pagina dando la enhorabuena por el registro..."
Podes utilizar la funcion propia de javascript window.location.replace al hacer click sobre el boton del fomulario.

Código
  1. // Al hacer click sobre el boton del formulario...
  2. window.location.replace("http://misitio.com"); // Redireccionarlo al aviso 'enhorabuena por el registro!'  ;)
  3.  

Tambien si queres seguir con jquery podes cambiar todo el contenido del popup.

Código
  1. $(document).ready(function(){
  2. ...
  3. $('.cambiarTexto').click(function(){
  4. var nuevoContenido = 'Enhorabuena por el registro.!';
  5. if ($('#popup').is(':visible')) {
  6. $('#popup .content-popup').html(nuevoContenido);
  7. };
  8. });
  9. ...
  10. });
  11.  
Código
  1. <div class="content-popup">
  2. <button class="cambiarTexto">Subir Formulario</button>
  3. <div>
  4.