Tengo el siguiente javascript en mi página que no parece estar funcionando.
$('form').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
Me gustaría deshabilitar el envío del formulario al ingresar, o mejor aún, para llamar a mi formulario ajax. Cualquiera de las soluciones es aceptable, pero el código que incluyo anteriormente no impide que se envíe el formulario.
javascript
jquery
forms
form-submit
Adam Levitt
fuente
fuente
Respuestas:
Si
keyCode
no es atrapado, atrapewhich
:EDITAR: se lo perdió, es mejor usarlo en
keyup
lugar dekeypress
EDITAR 2: como en algunas versiones más nuevas de Firefox no se impide el envío del formulario, también es más seguro agregar el evento de pulsación de tecla al formulario. Además, no funciona (¿ya?) Simplemente vinculando el evento al "nombre" del formulario, sino solo al id del formulario. Por lo tanto, hice esto más obvio cambiando el código de ejemplo de manera apropiada.
EDITAR 3: cambiado
bind()
aon()
fuente
e.which
, por lo que no necesita realizar pruebase.keyCode
, pero +1 es la causa más probable de este problema.return false;
esto?e.preventDefault();
parece suficientekeyCode === 13 && !$(e.target).is('textarea')
Por lo general, el formulario se envía Entercuando se centra en los elementos de entrada.
Podemos deshabilitar la Enterclave (código
13
) en los elementos de entrada dentro de un formulario:DEMO: http://jsfiddle.net/bnx96/325/
fuente
textareas
dentro de la misma forma. Usar en$("form input")
lugar de$("form :input")
parece solucionarlo. DEMO: jsfiddle.net/bnx96/279Aún más corto:
fuente
function(e) {e.preventDefault();}
como valores de retorno en los controladores de eventos obsoletos: stackoverflow.com/a/20045473/601386Enter
y no se trata de deshabilitar el envío del formulario con elSubmit
botón.onClick
evento jQuery para validar un formulario y aún enviarlo usando jQuery. En otras palabras, hay casos en los que solo desea enviar a través de javascript / jQuery. Si bien aún puede usar AJAX con esta solución, deshabilita la funcionalidad básica delsubmit
método.which
docs.fuente
Esta solución funciona en todos los formularios del sitio web (también en formularios insertados con ajax), evitando que solo ingrese en los textos de entrada. Colóquelo en una función de documento listo y olvide este problema de por vida.
fuente
La mayoría de las respuestas anteriores evitarán que los usuarios agreguen nuevas líneas en un campo de área de texto. Si esto es algo que desea evitar, puede excluir este caso en particular al verificar qué elemento tiene el foco actualmente:
fuente
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 .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.
fuente
si solo desea deshabilitar el botón enviar al ingresar y enviar, use el evento de envío del formulario
Puede reemplazar "return false" con la llamada a la función JS que hará lo que sea necesario y también enviará el formulario como último paso.
fuente
Puede hacerlo perfectamente en Javascript puro, simple y no requiere biblioteca. Aquí está mi respuesta detallada para un tema similar: deshabilitar la tecla enter para el formulario
En resumen, aquí está el código:
fuente
e.target.nodeName === 'INPUT' && e.target.type !== 'textarea'
. Con el código especificado, permitirá enviar formularios si se enfoca una radio o casilla de verificación.No sé si ya resolvió este problema, o si alguien está tratando de resolverlo ahora mismo, ¡pero aquí está mi solución para esto!
fuente
La manera simple es cambiar el tipo de botón a botón - en html y luego agregar evento en js ...
Cambiar de esto:
A
Y en js o jquery agregue:
fuente
El siguiente código negará el uso de la tecla Intro para enviar un formulario, pero aún le permitirá usar la tecla Intro en un área de texto. Puede editarlo más según sus necesidades.
fuente
En Firefox, cuando ingresas y presionas Intro, enviará su forma superior. La solución está en el formulario de envío, agregue esto:
fuente
3 años después y ni una sola persona ha respondido esta pregunta por completo.
El autor de la pregunta quiere cancelar el envío del formulario predeterminado y llamar a su propio Ajax. Esta es una solicitud simple con una solución simple. No es necesario interceptar todos los caracteres ingresados en cada entrada.
Suponiendo que el formulario tiene un botón de envío, ya sea
<button id="save-form">
ao an<input id="save-form" type="submit">
, haga lo siguiente:fuente
Escuché
which
que no se recomienda, así que cambie la respuesta mejor calificada a esto.árbitro. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which
fuente
Cuando finaliza el archivo (carga completa), el script detecta cada evento para la tecla "Entrada" y desactiva el evento detrás.
fuente
Solución completa en JavaScript para todos los navegadores
El código anterior y la mayoría de las soluciones son perfectas. Sin embargo, creo que la "respuesta corta" que más me gustó es incompleta.
Así que aquí está la respuesta completa. en JavaScript con soporte nativo para IE 7 también.
Esta solución ahora evitará que el usuario envíe utilizando la tecla Intro y no volverá a cargar la página, ni lo llevará a la parte superior de la página, si su formulario está en algún lugar debajo.
fuente
Qué tal esto:
Esto debería deshabilitar todos los formularios con botones de envío en su aplicación.
fuente