Слушатель Extjs при нажатии клавиши проверяет, является ли ее ЛЮБОЙ символ - PullRequest
4 голосов
/ 05 апреля 2011

Я не могу найти это где-нибудь. Я хочу найти лучший способ проверить, является ли нажатие клавиши на самом деле символом.

listeners:{
    'keyup':function(f, e){
        //Is key a letter/character
    }
}

EDIT

Спасибо всем, кто ответил, я ДЕЙСТВИТЕЛЬНО знаю, как определить фактическую нажатую клавишу, я хочу знать, как определить, является ли эта клавиша символом (а не стрелками, клавишей возврата, вводом и т. Д.)

Ответы [ 4 ]

5 голосов
/ 05 апреля 2011

Для захвата событий клавиатуры необходимо установить для свойства enableKeyEvents компонента значение true.

...,
enableKeyEvents: true,
listeners:{
    'keyup': function(f, e){
        var charCode = e.getCharCode();
        var key      = e.getKey();
    }
},
...

См. " Обнаружение нажатий клавиш " для описания различия keyCode и charCode .

5 голосов
/ 05 апреля 2011

Вам нужно захватить параметры, которые отправляются на событие.Затем оцените event.getKey():

listeners:{
    'keyup':function(field, event){
        if(event.getKey() >= 65 && event.getKey() <= 90) {
           //the key was A-Z
        }
        if(event.getKey() >= 97 && event.getKey() <= 122) {
           //the key was a-z
        }
    }
}
4 голосов
/ 05 апреля 2011

Вам необходимо иметь правильные параметры для вашего события.

'keyup': {
        fn: function(field,event) {
         //use event.getKey() to get the key
         }
    }

Первый параметр - это поле (элемент формы), а второй - объект события.Вы можете использовать объект события, чтобы получить детали нажатия клавиш.Используйте метод getKey() или getCharCode() в соответствии с вашими требованиями. Метод

getKey возвращает числовой код.Вам придется сравнить диапазон (a = 65 и z = 90), чтобы проверить, было ли нажатие клавиши символьным.Ext JS предоставляет некоторые статические переменные для проверки специальных ключей.

0 голосов
/ 05 апреля 2011

Вы не можете определить по событиям keyup или keydown, произвело ли нажатие клавиши символ или нет.Единственное событие, которое может это сделать, это keypress.Даже в некоторых браузерах это довольно сложно обнаружить из-за непоследовательного поведения.См. Раздел «3.2. Значения, возвращаемые в символьных событиях» на следующей странице: http://unixpapa.com/js/key.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...