javascript quitar Desactivando la tecla enter para el formulario




quitar submit enter (7)

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);
    },

https://code.i-harness.com


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://.com/a/1977126/560114 .


En la etiqueta de su formulario simplemente pegue esto:

onkeypress="return event.keyCode != 13;"

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).

https://www.w3.org/TR/html5/forms.html#implicit-submission

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.).


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();
    }
});

prueba esto ^^

$(document).ready(function() {
        $("form").bind("keypress", function(e) {
            if (e.keyCode == 13) {
                return false;
            }
        });
    });

Espero que esto ayude





window