Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Горячие клавиши. Запрет ввода в input. (https://javascript.ru/forum/misc/23978-goryachie-klavishi-zapret-vvoda-v-input.html)

August 13.12.2011 22:40

Горячие клавиши. Запрет ввода в 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;
  }


Проблема в том, что если курсор находится в поле ввода, то туда записывается в верхнем случае буква Й, а в нижнем буква Ф. Что крайне недопустимо.

Как предотвратить ввод в поле при использовании горячих клавиш?

devote 13.12.2011 22:46

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;
  }

GuardCat 13.12.2011 22:47

Добавьте строку
return false;
после вызова ваших функций внутри блоков if.

August 14.12.2011 21:59

Спасибо, 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.