javascript - presionar - Desactivando la tecla enter para el formulario
evitar submit al presionar enter asp net (10)
Aquí hay una forma sencilla de lograr esto con jQuery que lo limita a los elementos de entrada apropiados:
//prevent submission of forms when pressing Enter key in a text input
$(document).on(''keypress'', '':input:not(textarea):not([type=submit])'', function (e) {
if (e.which == 13) e.preventDefault();
});
Gracias a esta respuesta: https://stackoverflow.com/a/1977126/560114 .
He estado intentando desactivar la tecla Intro en mi formulario. El código que tengo se muestra a continuación. Por alguna razón, la tecla Intro todavía está activando el envío. El código está en mi sección principal y parece ser correcto de otras fuentes.
disableEnterKey: function disableEnterKey(e){
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return (key != 13);
},
En la etiqueta de su formulario simplemente pegue esto:
onkeypress="return event.keyCode != 13;"
La mayoría de las respuestas están en jQuery. Puede hacerlo perfectamente en Javascript puro, simple y sin necesidad de biblioteca. Aquí está:
<script type="text/javascript">
window.addEventListener(''keydown'',function(e){if(e.keyIdentifier==''U+000A''||e.keyIdentifier==''Enter''||e.keyCode==13){if(e.target.nodeName==''INPUT''&&e.target.type==''text''){e.preventDefault();return false;}}},true);
</script>
Este código funciona muy bien porque, solo deshabilita la acción de pulsación de tecla "Enter" para el tipo de entrada = ''texto''. Esto significa que los visitantes todavía pueden usar la tecla "Enter" en textarea y en toda la página web. Todavía podrán enviar el formulario, yendo al botón "Enviar" con las teclas "Tabulador" y presionando "Enter".
Aquí hay algunos puntos destacados:
- Está en javascript puro (no se requiere biblioteca).
- No solo verifica la tecla presionada, sino que también confirma si se presiona "Enter" en el elemento de formulario de tipo de entrada = ''texto''. (Lo que hace que las formas más defectuosas envíen
- Junto con lo anterior, el usuario puede usar la tecla "Enter" en cualquier otro lugar.
- Es corto, limpio, rápido y directo al grano.
Si también desea deshabilitar "Enter" para otras acciones, puede agregar console.log (e); para sus propósitos de prueba, y presione F12 en Chrome, vaya a la pestaña "consola" y presione "retroceso" en la página y mire dentro de ella para ver qué valores se devuelven, luego puede apuntar a todos esos parámetros para mejorar aún más el código arriba para satisfacer sus necesidades de "e.target.nodeName" , "e.target.type" y muchos más ...
La mejor manera que encontré aquí:
Dream.In.Code
action="javascript: void(0)"
o action="return false;"
(no funciona en mi)
Para una solución que no sea javascript, intente colocar un <button disabled>Submit</button>
en su formulario, colocado antes de cualquier otro botón / entrada de envío. Sugiero inmediatamente después de la etiqueta de apertura <form>
(y utilizando CSS para ocultarla, accesskey = ''- 1'' para sacarlo de la secuencia de pestañas, etc.)
En AFAICT, los agentes de usuario buscan el primer botón de envío cuando se pulsa ENTER en una entrada, y si ese botón está desactivado, dejará de buscar otro.
El botón predeterminado de un elemento de formulario es el primer botón de envío en orden de árbol cuyo propietario de formulario es ese elemento de formulario.
Si el agente de usuario admite permitir que el usuario envíe un formulario implícitamente (por ejemplo, en algunas plataformas, presionar la tecla "ingresar" mientras un campo de texto está enfocado implícitamente envía el formulario), entonces hacerlo para un formulario cuyo botón predeterminado tiene una activación definida el comportamiento debe hacer que el agente de usuario ejecute pasos de activación de clic sintéticos en ese botón predeterminado.
En consecuencia, si el botón predeterminado está deshabilitado, el formulario no se envía cuando se utiliza dicho mecanismo de envío implícito. (Un botón no tiene comportamiento de activación cuando está deshabilitado).
Sin embargo, sí sé que Safari 10 MacOS se comporta mal aquí, al enviar el formulario incluso si el botón predeterminado está deshabilitado.
Por lo tanto, si puede asumir javascript, inserte <button
onclick="return false;"
>Submit</button>
lugar. En ENTER , se llamará al controlador onclick, y como devuelve falso, el proceso de envío se detiene. Los navegadores con los que he probado esto ni siquiera hacen la validación del navegador (enfocando el primer control de formulario no válido, mostrando un mensaje de error, etc.).
Puedes probar algo como esto, si usas jQuery.
$("form").bind("keydown", function(e) {
if (e.keyCode === 13) return false;
});
Eso esperará una pulsación, si es Enter , no hará nada.
Revisé todas las soluciones anteriores, no funcionan. La única solución posible es capturar el evento ''onkeydown'' para cada entrada del formulario. Debe adjuntar disableAllInputs para cargar la página o mediante jquery ready ()
/*
* Prevents default behavior of pushing enter button. This method doesn''t work,
* if bind it to the ''onkeydown'' of the document|form, or to the ''onkeypress'' of
* the input. So method should be attached directly to the input ''onkeydown''
*/
function preventEnterKey(e) {
// W3C (Chrome|FF) || IE
e = e || window.event;
var keycode = e.which || e.keyCode;
if (keycode == 13) { // Key code of enter button
// Cancel default action
if (e.preventDefault) { // W3C
e.preventDefault();
} else { // IE
e.returnValue = false;
}
// Cancel visible action
if (e.stopPropagation) { // W3C
e.stopPropagation();
} else { // IE
e.cancelBubble = true;
}
// We don''t need anything else
return false;
}
}
/* Disable enter key for all inputs of the document */
function disableAllInputs() {
try {
var els = document.getElementsByTagName(''input'');
if (els) {
for ( var i = 0; i < els.length; i++) {
els[i].onkeydown = preventEnterKey;
}
}
} catch (e) {
}
}
Si usas jQuery, es bastante simple. Aqui tienes
$(document).keypress(
function(event){
if (event.which == ''13'') {
event.preventDefault();
}
});
Solo agregue el siguiente código en la etiqueta <Head>
en su código HTML. Se enviará el formulario en la tecla Intro para todos los campos del formulario.
<script type="text/javascript">
function stopEnterKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
}
document.onkeypress = stopEnterKey;
</script>
prueba esto ^^
$(document).ready(function() {
$("form").bind("keypress", function(e) {
if (e.keyCode == 13) {
return false;
}
});
});
Espero que esto ayude