Можно ли определить, включен ли «capslock» в событии клика в jquery?

Я хотел бы знать, можно ли определить состояние клавиши Caps Lock с помощью jquery и без нажатия клавиши.

Позвольте мне быть более ясным. У меня есть поле для пароля. Когда я просто нажимаю на него или когда поле пароля находится в фокусе, мне нужно отобразить предупреждающее сообщение, если включена блокировка заглавных букв (аналогично входу в Windows). Я знаю о методе сравнения кодов символов, но это не то, что мне нужно.

Это для приложения Yii. Поэтому, если у него есть функция по умолчанию для проверки состояния блокировки заглавных букв, сообщите мне об этом.

Любая помощь будет высоко оценена ..!

Спасибо..!


person tanuja90    schedule 13.05.2013    source источник
comment
Вы хотите определить, включен ли капслок, даже если пользователь не нажал какую-либо клавишу? Я не уверен, что это возможно в JavaScript.   -  person Denys Séguret    schedule 13.05.2013
comment
попробуйте это capslock.mclean.ws... надеюсь, вам поможет   -  person alwaysLearn    schedule 13.05.2013
comment
stackoverflow.com/questions/11881359 / проверить этот пост   -  person muneebShabbir    schedule 13.05.2013
comment
@dreamCoder Кажется, здесь используется ключевое событие.   -  person Denys Séguret    schedule 13.05.2013
comment
Я думаю, что был неправ, проголосовав за закрытие этого вопроса, это не дубликат.   -  person Denys Séguret    schedule 13.05.2013
comment
Я не думаю, что можно будет проверить состояние без ключа... даже мне будет интересно узнать, как это можно сделать... :)   -  person alwaysLearn    schedule 13.05.2013
comment
Некоторые браузеры (по крайней мере, Chrome и Safari) уже отображают значок в поле пароля, когда пользователь включает заглавные буквы.   -  person JJJ    schedule 13.05.2013
comment
@dystroy, как насчет события onfocus()? :)   -  person InfantPro'Aravind'    schedule 17.02.2014


Ответы (4)


В JavaScript в браузере у вас либо есть решение, основанное на том, что браузер предоставляет вам в стандартном API, либо нет.

В этом случае нет прямого доступа к состоянию клавиатуры, поэтому ответ нет: вы не можете сделать лучше, чем отображать свое сообщение, когда пользователь нажимает клавишу.

person Denys Séguret    schedule 13.05.2013

Поиск Google показал это. Я не думаю, что вы можете проверить статус напрямую. Так что вы узнаете только после того, как письмо будет напечатано.

http://capslock.mclean.ws/

Итак, чтобы ответить на ваш вопрос: можно ли определить, включен ли «capslock» в событии щелчка в jquery - Нет!

person Miro    schedule 13.05.2013
comment
Это похоже на обычное решение, использующее ключевое событие. Так что это не то, что нужно ОП. - person Denys Séguret; 13.05.2013

Использовать этот

document.onkeydown = function (e) { //check if capslock key was pressed in the whole window
    e = e || event;
    if (typeof (window.lastpress) === 'undefined') {
        window.lastpress = e.timeStamp-51; 
     }

        if (e.keyCode == 20 && e.timeStamp > window.lastpress + 50) {
            if (typeof (window.capsLockEnabled) !== 'undefined') {
                window.capsLockEnabled = !window.capsLockEnabled;
            }
            if(!$(document).data("capsOn")){
              $(document).data("capsOn", true);
            }else{
              $(document).data("capsOn", false);
            }
        }
        window.lastpress = e.timeStamp;
        //sometimes this function is called twice when pressing capslock once, so I use the timeStamp to fix the problem


};

а затем ниже код

$("#password").click(function(){
if($(document).data("capsOn")){
 alert("CAPS ON");
}
});

ДЕМО

person rahul maindargi    schedule 13.05.2013
comment
Не работает, если блокировка заглавных букв уже включена, когда пользователь входит на страницу, и даже если они нажимают ее, находясь на странице, это очень ненадежно. Это дает предупреждение, казалось бы, наугад. - person JJJ; 13.05.2013
comment
работает для меня каждый раз ..кроме того, что блокировка заглавных букв уже включена, когда пользователь входит на страницу - person rahul maindargi; 13.05.2013