Найденный этим интересным.... Можно дать ему попытку..
function isCapslock(e){
e = (e) ? e : window.event;
var charCode = false;
if (e.which) {
charCode = e.which;
} else if (e.keyCode) {
charCode = e.keyCode;
}
var shifton = false;
if (e.shiftKey) {
shifton = e.shiftKey;
} else if (e.modifiers) {
shifton = !!(e.modifiers & 4);
}
if (charCode >= 97 && charCode <= 122 && shifton) {
return true;
}
if (charCode >= 65 && charCode <= 90 && !shifton) {
return true;
}
return false;
}
Для международных символов, дополнительная проверка может быть добавлена для следующих ключей по мере необходимости. Необходимо получить диапазон кода клавиши для символов, которыми Вы интересуетесь, может быть при помощи массива keymapping, который удержит все допустимые клавиши варианта использования, к которым Вы обращаетесь...
прописной A-Z или 'Г „', 'Г–', 'Гњ', нижний регистр a-Z или 0-9 или 'Г¤', 'Г ¶', 'Гј'
вышеупомянутые ключи является просто демонстрационным представлением.
Можно обнаружить использование Caps Lock, "верхний регистр буквы и никакой сдвиг, нажатый" с помощью получения нажатия клавиши на документе. Но тогда Вы лучше быть уверенным, что никакой другой обработчик нажатий клавиши не выталкивает пузырь события, прежде чем это доберется до обработчика на документе.
document.onkeypress = function ( e ) {
e = e || window.event;
var s = String.fromCharCode( e.keyCode || e.which );
if ( (s.toUpperCase() === s) !== e.shiftKey ) {
// alert('caps is on')
}
}
Вы могли захватить событие во время фазы получения в браузерах, которые поддерживают это, но это кажется несколько бессмысленным тому, поскольку это не будет работать над всеми браузерами.
я не могу думать ни о каком другом способе фактического обнаружения состояния Caps Lock. Проверка проста так или иначе и если не обнаруживаемые символы были введены, хорошо... тогда обнаружение не было необходимо.
был статья о 24 путях на этом в прошлом году. Довольно хороший, но испытывает недостаток в поддержке международного символа (использование toUpperCase()
для обхождения этого).
В jQuery,
$('#example').keypress(function(e) {
var s = String.fromCharCode( e.which );
if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) {
alert('caps is on');
}
});
Во избежание ошибки, например, с клавишей возврата, требуется s.toLowerCase ()! == s
.
В jQuery:
$('some_element').keypress(function(e){
if(e.keyCode == 20){
//caps lock was pressed
}
});
Этот плагин jQuery ( код ) реализовывает ту же идею как в ответ Rajesh немного более кратко.