Estoy tratando de capturar ctrl+ zcombinación de teclas en javascript con este código:
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<script type='text/javascript'>
function KeyPress(e) {
var evtobj = window.event? event : e
//test1 if (evtobj.ctrlKey) alert("Ctrl");
//test2 if (evtobj.keyCode == 122) alert("z");
//test 1 & 2
if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
}
document.onkeypress = KeyPress;
</script>
</body>
</html>
La línea comentada "test1" genera la alerta si mantengo presionada la ctrltecla y presiono cualquier otra tecla.
La línea comentada "test2" genera la alerta si presiono la ztecla.
Póngalos juntos según la línea después de "prueba 1 y 2", y mantener presionada la ctrltecla y luego presionar la ztecla no genera la alerta como se esperaba.
¿Qué pasa con el código?
fuente

ctrl+t122es para la tecla F11 :)keypressevento. (Considerando quekeydownykeyupresponder al usuario presionando botones, no escribiendo texto.)Para las personas futuras que se encuentren con esta pregunta, aquí hay un método mejor para hacer el trabajo:
document.addEventListener('keydown', function(event) { if (event.ctrlKey && event.key === 'z') { alert('Undo!'); } });Usar
event.keysimplifica enormemente el código, eliminando constantes codificadas. Tiene soporte para IE 9+.Además, usar
document.addEventListenersignifica que no golpeará a otros oyentes en el mismo evento.Finalmente, no hay razón para usar
window.event. Se desaconseja activamente y puede resultar en un código frágil.fuente
KeyboardEvent.keyCodeahora está en desuso desde hace un par de años. La mejor forma de capturar todos los navegadores es comprobare.keyprimero y luego volver ae.keyCode. O puede usar este polyfillCtrl+ ttambién es posible ... simplemente use el código clave como 84 como
if (evtobj.ctrlKey && evtobj.keyCode == 84) alert("Ctrl+t");fuente
$(document).keydown(function(e){ if( e.which === 89 && e.ctrlKey ){ alert('control + y'); } else if( e.which === 90 && e.ctrlKey ){ alert('control + z'); } });Manifestación
fuente
90 es la Zclave y esta hará la captura necesaria ...
function KeyPress(e){ // Ensure event is not null e = e || window.event; if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) { // Ctrl + Z // Do Something } }Dependiendo de sus requisitos, es posible que desee agregar una
e.preventDefault();dentro de su declaración if para realizar exclusivamente su funcionalidad personalizada.fuente
Este complemento creado por mí puede ser útil.
Enchufar
Puede usar este complemento, debe proporcionar los códigos clave y la función para que se ejecute así
simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');});En el código, he mostrado cómo actuar para Ctrl+ Z. Obtendrá documentación detallada en el enlace. El complemento está en la sección de código JavaScript de mi lápiz en Codepen.
fuente
Utilice este código para CTRL+ Z. El código clave para presionar una Ztecla es 122 y el CTRL+ Zes 26. Verifique este código clave en el área de su consola
$(document).on("keypress", function(e) { console.log(e.keyCode); /*ctrl+z*/ if(e.keyCode==26) { //your code here } });fuente