Горячие клавиши. Запрет ввода в input.
Есть такой скрипт:
document.onkeydown = function(e) {//при событии нажатии клавиш происходит выполнение функции e = e || window.event; if (e.shiftKey && e.keyCode == 81) {// если зажата клавиша шифт и клавиша Q, то... Zauberei(); //Выполняется функция зауберай } if (e.shiftKey && e.keyCode == 65) {// если зажата клавиша шифт и клавиша A, то... NeuScheck(); //Выполняется функция нойечек } return true; } Проблема в том, что если курсор находится в поле ввода, то туда записывается в верхнем случае буква Й, а в нижнем буква Ф. Что крайне недопустимо. Как предотвратить ввод в поле при использовании горячих клавиш? |
document.onkeydown = function(e) {//при событии нажатии клавиш происходит выполнение функции e = e || window.event; if ( !e.which && e.button ) { e.which = e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) ) } alert( e.which ); // вот тут можно увидеть номер символа ввода, если не ошибаюсь конечно. =) if (e.shiftKey && e.keyCode == 81) {// если зажата клавиша шифт и клавиша Q, то... Zauberei(); //Выполняется функция зауберай } if (e.shiftKey && e.keyCode == 65) {// если зажата клавиша шифт и клавиша A, то... NeuScheck(); //Выполняется функция нойечек } return true; } |
Добавьте строку
return false;после вызова ваших функций внутри блоков if. |
Спасибо, GuardCat!
Рабочим будет такой скрипт: document.onkeydown = function(e) { e = e || window.event; if (e.shiftKey && e.keyCode == 81) {// если зажата клавиша шифт и клавиша Q, то... Zauberei(); //Выполняется функция зауберай return false; } if (e.shiftKey && e.keyCode == 65) {// если зажата клавиша шифт и клавиша A, то... NeuScheck(); //Выполняется функция нойечек return false; } } Только появилась другая проблема! Удивительно, но при английской раскладке, функция выполняется и ввод символа блокируется. При русской раскладке по прежнему вводятся символы! |
Часовой пояс GMT +3, время: 21:41. |