#javascript
Можно узнать на сайте, включен ли Caps Lock или нет?
Ответы
Ответ 1
Учитывая дискуссию в комментариях к вопросу, вот вариант, который определяет включен ли Caps Lock даже если нажата цифра (только в случае если Caps Lock имеет эффект!): $('#txtTest').on('keydown', function(e) { $(this).data('_lastKey', e.which); }); $('#txtTest').on('keypress', function(e) { var lastKey = +$(this).data('_lastKey'); if(lastKey < 47 || lastKey > 90) return true; var letter = String.fromCharCode(e.which); var upper = letter.toUpperCase(); var lower = letter.toLowerCase(); var isNumeric = lastKey >= 48 && lastKey <= 57; var caps = false; if(isNumeric) caps = (lastKey == e.which && e.shiftKey) || (lastKey != e.which && !e.shiftKey); else if( (letter === upper && !e.shiftKey) || (letter === lower && e.shiftKey) ) caps = !isNumeric; //alert(caps); }); Единственный выход это предварительно отлавливать событие keydown и сохранять нажатую клавишу. Демо: http://jsfiddle.net/xH8vC/10/ Оформил как плагин к jQuery: jquery.capsCheckerОтвет 2
document.addEventListener('keydown', function(event) { /* Работает в Chrome 31+, Firefox 15+, Internet Explorer 9+, Opera -, Safari (Webkit) - */ var caps = event.getModifierState && event.getModifierState('CapsLock'); document.getElementById('capsTest').innerHTML = caps ? 'Капс нажат' : 'Капс не нажат'; }); http://jsfiddle.net/w2vk0bzL/Ответ 3
Можно использовать JQuery. $('#example').keypress(function(e) { var s = String.fromCharCode( e.which ); if ( s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey ) { alert('caps is on'); } }); Взял со StackOwerflow Либо можете воспользоваться какой-нибудь уже написанной библиотекой. Вот например. Ну и в добавление. Я не считаю возможным получить состояние капслока до того, как пользователь начнет вводить текст.
Комментариев нет:
Отправить комментарий