Захват комбинации клавиш ctrl+z в javascript
Я пытаюсь захватить ctrl+z комбинация клавиш в javascript с этим кодом:
<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>
прокомментированная строка "test1" генерирует предупреждение, если я удерживаю ctrl ключ и нажмите любую другую клавишу.
прокомментированная строка "test2" генерирует предупреждение, если я нажму z ключ.
положите их вместе в соответствии с линией после "test 1 & 2" и удерживая ctrl
6 ответов
- использовать onkeydown(илиonkeyup), а неonkeypress
- использовать keyCode90, не 122
онлайн демо:http://jsfiddle.net/29sVC/
разъяснить коды клавиш не совпадают с кодами символов.
коды символов для текста (они различаются в зависимости от кодировки, но во многих случаях 0-127 остаются кодами ASCII). Коды клавиш сопоставляются с клавишами на клавиатуре. Например, в юникоде 0x22909 значит 好. Есть не так много клавиатур (если таковые имеются), у кого есть ключ для этого.
ОС заботится о преобразовании нажатий клавиш в коды символов с помощью методов ввода, настроенных пользователем. Результаты отправляются в событие keypress. (В то время как keydown и keyup отвечают на нажатие пользователем кнопок, а не на ввод текста.)
Ctrl+t - это тоже возможно...просто используйте код ключа как 84, как
if (evtobj.ctrlKey && evtobj.keyCode == 84) 
 alert("Ctrl+t");
90-это Z ключ и это сделает необходимый захват...
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
     }
}
в зависимости от ваших требований вы можете добавить e.preventDefault(); в вашем операторе if исключительно для выполнения ваших пользовательских функций.
$(document).keydown(function(e){
  if( e.which === 89 && e.ctrlKey ){
     alert('control + y'); 
  }
  else if( e.which === 90 && e.ctrlKey ){
     alert('control + z'); 
  }          
});
этот плагин, сделанный мной, может быть полезен.
вы можете использовать этот плагин вы должны предоставить ключ коды и функции будут работать так
simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');});
в коде, который я показал, как выполнить для Ctrl+Z. Вы получите подробную документацию по ссылке. Плагин находится в разделе кода JavaScript моего пера на Codepen.
используйте этот код CTRL+Z. кода Z В нажатие 122 и CTRL+Z - это 26. проверьте этот код ключа в области консоли
 $(document).on("keypress", function(e) {
       console.log(e.keyCode);
       /*ctrl+z*/
       if(e.keyCode==26)
       {
          //your code here
       }
    });
