¿Cómo hacer que una tecla se active cuando se presiona una tecla usando JavaScript?

En JavaScript, mantener presionada una tecla activará la tecla continuamente hasta que se suelte. Este comportamiento se puede usar en aplicaciones como juegos en los que se espera que una tecla se active solo una vez, incluso después de mantenerla presionada. Esto se puede lograr usando dos métodos:

Método 1: uso de una variable indicadora para verificar el estado actual de la tecla: se define una variable indicadora que realiza un seguimiento de la pulsación actual de la tecla. Los eventos ‘keyup’ y ‘keydown’ están configurados para modificar esta variable indicadora de modo que refleje correctamente el estado actual de la pulsación de tecla.

El evento ‘keydown’ solo permite que se active el evento respectivo si la tecla aún no se mantiene presionada al verificar la variable de bandera. El evento ‘keyup’, por otro lado, establece la variable de bandera para indicar que la tecla ha sido liberada. Al usar ambos con detectores de eventos, uno puede asegurarse de que la tecla se active solo una vez, incluso si se mantiene presionada.

Sintaxis:

let isPressed = false;
      
element.onkeydown = function (e) {
    if (!isPressed) {
        isPressed = true;
        console.log('Key Fired!');
    }
};
  
element.onkeyup = function (e) {
    isPressed = false;
}

Ejemplo:

<!DOCTYPE html>
<html>
  
<head>
    <title>
        How to make a key fire when key
        pressed using JavaScript ?
    </title>
</head>
  
<body>
    <h1 style="color: green">
        GeeksforGeeks
    </h1>
      
    <b>
        How to make a key fire only
        once when pressed?
    </b>
      
    <p>
        Press any button and observe
        the logs to verify that a key
        only fires once.
    </p>
      
    <input type="text">
      
    <script type="text/javascript">
        let element = document.querySelector('input');
        let isPressed = false;
          
        element.onkeydown = function (e) {
            if (!isPressed) {
                isPressed = true;
                console.log('Key Fired!');
            }
        };
      
        element.onkeyup = function (e) {
            isPressed = false;
        }
    </script>
</body>
  
</html>

Producción:
using-flags

Método 2: usar la propiedad de repetición: la propiedad ‘repetir’ de la interfaz KeyboardEvent se usa para verificar si una tecla se repite como resultado de que el usuario la mantenga presionada. Esta propiedad se puede verificar en cada evento ‘keydown’ y permite que el evento especificado solo se active si devuelve falso. Esto evita que la tecla se dispare varias veces incluso si el usuario mantiene presionada la tecla.

Sintaxis:

element.onkeydown = function (e) {
    if (!e.repeat) {
        console.log("Key Fired!");
    }
};

Ejemplo:

<!DOCTYPE html>
<html>
  
<head>
    <title>
        How to make a key fire when key
        pressed using JavaScript ?
    </title>
</head>
  
<body>
    <h1 style="color: green">
        GeeksforGeeks
    </h1>
      
    <b>
        How to make a key fire only
        once when pressed?
    </b>
      
    <p>
        Press any button and observe
        the logs to verify that a key
        only fires once.
    </p>
      
    <input type="text">
      
    <script type="text/javascript">
          
        let element = 
            document.querySelector('input');
      
        element.onkeydown = function (e) {
            if (!e.repeat) {
                console.log("Key Fired!");
            }
        };
    </script>
</body>
  
</html>

Producción:
using-repeat

Publicación traducida automáticamente

Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *