if(characterCode == 13)
{
return false; // returning false will prevent the event from bubbling up.
}
else
{
return true;
}
Ok, entonces imagina que tienes el siguiente cuadro de texto en un formulario:
<input id="scriptBox" type="text" onkeypress="return runScript(event)" />
Para ejecutar un script "definido por el usuario" desde este cuadro de texto cuando se presiona la tecla Intro, y no hacer que envíe el formulario, aquí hay un código de muestra . Tenga en cuenta que esta función no realiza ninguna comprobación de errores y lo más probable es que solo funcione en IE. Para hacer esto correctamente, necesita una solución más sólida, pero obtendrá la idea general.
function runScript(e) {
//See notes about 'which' and 'key'
if (e.keyCode == 13) {
var tb = document.getElementById("scriptBox");
eval(tb.value);
return false;
}
}
devolver el valor de la función alertará al controlador de eventos para que no vuelva a hacer burbujas en el evento y evitará que el evento de pulsación de tecla se siga manejando.
NOTA:
Se ha señalado que ahorakeyCode
está en desuso . La siguiente mejor alternativa tambiénwhich
ha quedado en desuso .
Desafortunadamente, el estándar preferido key
, que es ampliamente compatible con los navegadores modernos, tiene un comportamiento poco fiable en IE y Edge . Cualquier cosa anterior a IE11 aún necesitaría un polyfill .
Además, si bien la advertencia obsoleta es bastante ominosa keyCode
y su which
eliminación representaría un cambio radical masivo para un número incontable de sitios web heredados. Por esa razón, es poco probable que vayan a algún lado pronto.
eval
presionar un botón no es diferente de si abrieran las herramientas de desarrollador y lo hicieran. Si esto fuera algo que se estaba guardando en la base de datos y otro usuario pudiera abrirlo , entonces sería un gran problema, pero ese es un problema que es completamente independiente de este pequeño fragmento.keyCode
ahora está en desusoUse ambos
event.which
yevent.keyCode
:fuente
which
otroskeyCode
. Es una buena práctica incluir ambos.keydown
evento en lugar dekeyup
orkeypress
Si estás usando jQuery:
fuente
preventDefault
no parece detener el envío del formulario, al menos en Chrome.$('input[type=text]').on('keydown', function(e) { if (e.which == 13) { e.preventDefault(); } });
'keydown'
es correcto como los otros comentaristas están afirmando. Como no ha cambiado, actualizaré la respuesta. Usé esta respuesta y me quedé atrapado por un tiempo hasta que regresé y miré los comentarios.event.key === "Enter"
Más reciente y mucho más limpio: uso
event.key
. ¡No más códigos de números arbitrarios!Documentos de Mozilla
Navegadores Soportados
fuente
keyCode
es obsoleto. Esto es más legible y mantenible que un entero mágico en su códigoDetectar la tecla Enter presionada en todo el documento:
http://jsfiddle.net/umerqureshi/dcjsa08n/3/
fuente
Anule la
onsubmit
acción del formulario para que sea una llamada a su función y agregue return false después, es decir:fuente
Una solución para reaccionar
fuente
Entonces, tal vez la mejor solución para cubrir tantos navegadores como sea posible y estar a prueba del futuro sería
fuente
si quieres hacerlo usando el script puramente java aquí hay un ejemplo que funciona perfectamente
Digamos que este es tu archivo html
en su archivo popup.js simplemente use esta función
fuente
El siguiente código agregará un oyente para la
ENTER
clave en toda la página.Esto puede ser muy útil en pantallas con un solo botón de acción, por ejemplo, Iniciar sesión, Registrarse, Enviar, etc.
Probado en todos los navegadores.
fuente
Una solución jQuery.
Vine aquí buscando una manera de retrasar el envío del formulario hasta después de que se desencadenara el evento borroso en la entrada de texto.
Sería bueno obtener una versión más general que disparara todos los eventos retrasados en lugar de solo enviar el formulario.
fuente
Una manera mucho más simple y efectiva desde mi perspectiva debería ser:
fuente
Usando TypeScript, y evita llamadas múltiples en la función
fuente
Un poco simple
No envíe el formulario al presionar "Enter":
Ejecute la función al presionar la tecla "Enter":
fuente
JS nativo (buscar API)
fuente
Agregue este código en su página HTML ... deshabilitará ... Botón Intro ...
fuente
fuente
Solución de navegador cruzado
Algunos navegadores antiguos implementaron eventos keydown de una manera no estándar.
which
ykeyCode
están en desuso hoy en día, pero no está de más buscar estos eventos para que el código funcione para los usuarios que todavía usan navegadores más antiguos como IE.La
isKeyPressed
función verifica si se ingresó la tecla presionada yevent.preventDefault()
dificulta el envío del formulario.Ejemplo de trabajo mínimo
JS
HTML
https://jsfiddle.net/tobiobeck/z13dh5r2/
fuente