Actualmente, tengo 9 funciones diferentes que deben activarse con un solo botón al hacer clic y el teclado numérico (del 1 al 9).
Editar: Solución por Sode- v2
<!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <button type="button" id="b41" onclick="test_ks(event)">Shape Anchor Point</button> <script> const pressedButtons = {}; window.onkeydown = (e) => (pressedButtons[e.which] = true); window.onkeyup = (e) => (pressedButtons[e.which] = false); function test_ks(event) { if (pressedButtons[97]) { alert('numpad 1'); } else if (pressedButtons[98]) { alert('numpad 2'); } } </script> </body> </html>Intenté esto en https://manjunath7472.w3spaces.com/saved-from-Tryit-2021-11-06.html
Problema 1. Después de hacer clic en el teclado numérico 1, el teclado numérico 2 no funciona y después de hacer clic en el teclado numérico 2, el teclado numérico 1 funciona, pero luego el teclado numérico 2 no funciona.
2.Después del clic inicial en cualquier persona, desde la segunda vez, con solo un clic del mouse (sin presionar el teclado numérico del teclado) se activa la alerta.
3.Después de hacer clic por primera vez con la pulsación de una tecla, no considera la pulsación del teclado y la alerta se activa solo con un clic del ratón.
Cuando vincula una función para hacer clic en la etiqueta HTML, solo desea pasar el nombre de la función, ya que el DOM pasará el parámetro del evento.
<button type="button" id="b41" onclick="myFunction()">myButtonName</button>pero también, el evento de clic de un botón no tendrá ningún dato de teclado adjunto, por lo que es posible que desee considerar el uso de detectores de eventos keydown y keyup (probablemente en el objeto de la ventana) para realizar un seguimiento de qué teclas se presionan y usar esa información cuando se hace clic en el botón
<button type="button" id="b41" onclick="myFunction()">myButtonName</button> <span id="output"></span> <script> const pressedButtons = {}; const outputSpan = document.querySelector('#output'); window.onkeydown = (e) => (pressedButtons[e.which] = true); window.onkeyup = (e) => (pressedButtons[e.which] = false); function myFunction(event) { console.log(pressedButtons); if (pressedButtons[97]) { outputSpan.innerHTML = 'numpad 1'; } else if (pressedButtons[98]) { outputSpan.innerHTML = 'numpad 2'; } else { outputSpan.innerHTML = ''; } } </script> Editar: actualizado para cambiar el texto de un lapso en lugar de usar alert()