Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2011, 22:40
Новичок на форуме
Отправить личное сообщение для August Посмотреть профиль Найти все сообщения от August
 
Регистрация: 13.12.2011
Сообщений: 2

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


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

Как предотвратить ввод в поле при использовании горячих клавиш?
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2011, 22:46
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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;
  }
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2011, 22:47
Аватар для GuardCat
Просто любитель
Отправить личное сообщение для GuardCat Посмотреть профиль Найти все сообщения от GuardCat
 
Регистрация: 13.09.2011
Сообщений: 300

Добавьте строку
return false;
после вызова ваших функций внутри блоков if.
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2011, 21:59
Новичок на форуме
Отправить личное сообщение для August Посмотреть профиль Найти все сообщения от August
 
Регистрация: 13.12.2011
Сообщений: 2

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


Только появилась другая проблема! Удивительно, но при английской раскладке, функция выполняется и ввод символа блокируется. При русской раскладке по прежнему вводятся символы!

Последний раз редактировалось August, 14.12.2011 в 22:08.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода символов Beriagts jQuery 11 15.07.2014 14:40
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Запрет ввода символа Rezet jQuery 5 28.07.2009 10:11
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55