La exageración de tener que capturar y probar cada tecla para la tecla ENTER realmente me molesta, por lo que mi solución se basa en el siguiente comportamiento del navegador:
Al presionar ENTRAR, se activará un evento de clic en el botón de envío (probado en IE11, Chrome 38, FF 31) ** (ref: http://mattsnider.com/how-forms-submit-when-pressing-enter/ )
Entonces, mi solución es eliminar el botón de envío estándar (es decir <input type="submit">
) para que el comportamiento anterior falle porque no hay un botón de envío para hacer clic mágicamente cuando se presiona ENTRAR. En cambio, utilizo un controlador de clic jQuery en un botón normal para enviar el formulario a través del .submit()
método de jQuery .
<form id="myform" method="post">
<input name="fav_color" type="text">
<input name="fav_color_2" type="text">
<button type="button" id="form-button-submit">DO IT!</button>
</form>
<script>
$('#form-button-submit').click(function(){
$('#myform').submit();
});
</script>
Manifestación: http://codepen.io/anon/pen/fxeyv?editors=101
** este comportamiento no es aplicable si el formulario tiene solo 1 campo de entrada y ese campo es una entrada de 'texto'; en este caso, el formulario se enviará con la tecla ENTER incluso si no hay un botón de envío en el marcado HTML (por ejemplo, un campo de búsqueda). Este ha sido el comportamiento estándar del navegador desde los años 90.