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.


