Захват комбинации клавиш 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
- использовать
keyCode
90, не 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
}
});