Inicio / Blog / Problema con los formularios en la librería shadowbox 3.0.3

Problema con los formularios en la librería shadowbox 3.0.3

Luis Ruiz

Escrito por Luis Ruiz el Actualizado el

Normalmente, utilizo como Lightbox en mis desarrollos la librería shadowbox debido a que es compatible con jQuery, bastante fácil de configurar y por ahora me ha servido para todos los caso que me han ido surgiendo.

En este caso, el problema que tenía era el siguiente:

Cuando tenía un formulario en el popup y dabas a la tecla enter, volvía a cargarse la página. Perdiendo los datos introducidos o si había parámetros mediante GET o POST los perdía, como es lógico.

Mirando la documentación de la librería, encontré que para solucionar el bug había que poner la opción ‘enableKeys:false’ al abrir la el shadowbox, cosa que a mí no me funciono. Leyendo en el foro encontré una solución añadir al formulario lo siguiente:

<input type="text" />

Pero como es lógico me pareció una chapuza. Para solucionarlo de una forma más elegante, decidí capturar el evento de la tecla ‘enter’ y anularlo, lo hice de la siguiente forma:

$(document).ready(function(){
    $( 'form input').bind('keypress' , function(e) {
        if(e.keyCode==13){
            return false ;
        }
    });
});

Una forma más limpia sería detectar solo el evento cuando el foco esté en el input y en lugar de anularlo que se ejecute el submit. Si vas a ejecutar una función JavaScript la puedes poner antes del return, pero siempre tiene que estar return false.

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.