определить статус блокировки шапки при загрузке страницы (или аналогичной) - PullRequest
4 голосов
/ 21 марта 2011

В своем исследовании я обнаружил, как определять capslock при нажатии клавиши caps. Однако я хочу знать статус прописных букв даже в тех случаях, когда клавиша не трогается.

Пример: alert (ui.Keyboard.capslock) // вернет true или false;

Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 января 2012

Нет, вы не можете получить состояние кнопки клавиатуры при загрузке страницы.Вы должны проанализировать код клавиши нажатия клавиши.Это единственный способ.

1 голос
/ 25 июля 2018

Попробуйте этот код:

    <script language="Javascript">
function capLock(e){
 kc = e.keyCode?e.keyCode:e.which;
 sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
 if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk)){
  document.getElementById('divon').style.visibility = 'visible';
   document.getElementById('divoff').style.visibility = 'hidden';
 }else{
  document.getElementById('divon').style.visibility = 'hidden';
   document.getElementById('divoff').style.visibility = 'visible';
}
}
</script>
<input type="text" name="trackcaps" onkeypress="capLock(event)" />
<div id="divon" style="visibility:hidden">Caps Lock is on.</div>
<div id="divoff" style="visibility:hidden">Caps Lock is off.</div>
1 голос
/ 20 ноября 2015

Я только что предложил альтернативу, которая будет определять состояние блокировки заглавных букв и сохранять их так, чтобы при нажатии клавиши блокировки заглавных букв предупреждение можно было включать и выключать.Я пишу только для Chrome 45+ и ie9 +, поэтому могут потребоваться некоторые корректировки для общего использования, если это ваш план.

Вот мой HTML:

<input type="text" id="pwd">
<p id="caps"></p>

А вот js:

var LOGINPAGE = LOGINPAGE || {};
LOGINPAGE.CAPSdetect = {};
$(function() {
    LOGINPAGE.CAPSdetect.engage();
});

LOGINPAGE.CAPSdetect.isDetected = false;
LOGINPAGE.CAPSdetect.capsOn = false;

LOGINPAGE.CAPSdetect.engage = function() {
    $('#pwd').on('keypress', LOGINPAGE.CAPSdetect.shiftDetect);
    $(window).on('keydown', LOGINPAGE.CAPSdetect.capsDetect);
}

LOGINPAGE.CAPSdetect.shiftDetect = function(event) {
    var caps = $('#caps');
    var which = event.keyCode;
    var shift = event.shiftKey;
    var targ = event.target;
    if ((which >= 65 && which <= 90 && !shift) || (which >= 97 && which <= 122 && shift)) {
        caps.html('CAPS LOCK IS ON').css('color', 'crimson');
        LOGINPAGE.CAPSdetect.isDetected = true;
        LOGINPAGE.CAPSdetect.capsOn = true;
    } else if((which >= 65 && which <= 90 && shift) || (which >= 97 && which <= 122 && !shift)){
        caps.html('');
    }
}

LOGINPAGE.CAPSdetect.capsDetect = function(event) {
    if(event.keyCode === 20 && LOGINPAGE.CAPSdetect.isDetected) {
        LOGINPAGE.CAPSdetect.capsOn = (LOGINPAGE.CAPSdetect.capsOn)? false:true;
        if(LOGINPAGE.CAPSdetect.capsOn) {
            $('#caps').html('CAPS LOCK IS ON');
        } else {
            $('#caps').html('');
        }
    }
}

Я использую пространства имен, чтобы избежать глобальных переменных для isDetected и capsOn, следовательноLOGINPAGE.CAPSdetect. перед некоторыми функциями и переменными.См. this jsfiddle для отсутствия пространства имен и проверки его.

...