2009-12-15 20 views
10

Problema siguiente:Safari: ¿Inhabilita form-submit en Enter?

En mi sitio, tengo dos formularios. Uno para iniciar sesión y otro para datos principales. Tengo solo un botón de envío en la forma principal. La forma de inicio de sesión se envía a través de js en mainform submit.

Esto funciona bien. Pero en Safari puedo presionar Enter mientras mi foco está dentro del formulario de inicio de sesión. Esto enviará el formulario de inicio de sesión sin la forma principal, así que me sale un error (me redirecciona a una vista simple de un JSON que solicito al enviar).

¿Es posible desactivar la acción "al presionar enter"?

+0

Mientras investigaba este problema tropecé con un poco más de contexto para esta peculiaridad (tenga en cuenta el estado RESOLVIDO DE WONTFIX): https://bugs.webkit.org/show_bug.cgi?id=16886 –

Respuesta

22

Si dices que usas de todos modos el JS para enviar los datos en el formulario, por qué no cancelas el comportamiento predeterminado del navegador con <form onsubmit="return false;">. De esta manera, no importa si presiona el botón de enviar o si presiona enter en una entrada, no se enviará. El onsubmit = "return false" no debería interferir con llamar al método submit() en el formulario de JS.

+1

¡gracias! ¡Ahora está funcionando! – Newbie

+1

Muy buena y limpia respuesta. – Mattis

2

Puede agregar el controlador onsubmit para su formulario de inicio de sesión. Este controlador puede ayudarlo a evitar enviar su formulario (y, por ejemplo, mover el cursor al siguiente campo vacío en los formularios);

<form onsubmit="do_some_function(); return false;" ></form> 

Para evitar la forma de la sumisión, devuelva falso en su controlador onsubmit;

Cuestiones relacionadas