最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Detecting when CAPS LOCK is ON - Stack Overflow

programmeradmin1浏览0评论

I have this code for adding a keypress to a password. If capslock is on it will trigger. I got it from How do you tell if caps lock is on using JavaScript?

$("input[type='password']").keypress(function(e) {

    var $warn = $(this).next(".capsWarn"); // handle the warning mssg
    var kc = e.which; //get keycode
    var isUp = (kc >= 65 && kc <= 90) ? true : false; // uppercase
    var isLow = (kc >= 97 && kc <= 122) ? true : false; // lowercase
    // event.shiftKey does not seem to be normalized by jQuery(?) for IE8-
    var isShift = ( e.shiftKey ) ? e.shiftKey : ( (kc == 16) ? true : false ); // shift is pressed

    // uppercase w/out shift or lowercase with shift == caps lock
    if ( (isUp && !isShift) || (isLow && isShift) ) {
        $warn.show();
    } else {
        $warn.hide();
    }

}).after(capLock());
function capLock(e){
 alert('CAPSLOCK is ON');
}

The original code has the message in a span:

...}).after(<span class='capsWarn error' style='display:none;'>CAPSLOCK is ON</span>);

I wanted it to be an alert message but it is not performing as I expect it to. On load it should alert the message but even if the capslock is on it is not showing the alert.

How do I get it to detect the key and present the alert?

I have this code for adding a keypress to a password. If capslock is on it will trigger. I got it from How do you tell if caps lock is on using JavaScript?

$("input[type='password']").keypress(function(e) {

    var $warn = $(this).next(".capsWarn"); // handle the warning mssg
    var kc = e.which; //get keycode
    var isUp = (kc >= 65 && kc <= 90) ? true : false; // uppercase
    var isLow = (kc >= 97 && kc <= 122) ? true : false; // lowercase
    // event.shiftKey does not seem to be normalized by jQuery(?) for IE8-
    var isShift = ( e.shiftKey ) ? e.shiftKey : ( (kc == 16) ? true : false ); // shift is pressed

    // uppercase w/out shift or lowercase with shift == caps lock
    if ( (isUp && !isShift) || (isLow && isShift) ) {
        $warn.show();
    } else {
        $warn.hide();
    }

}).after(capLock());
function capLock(e){
 alert('CAPSLOCK is ON');
}

The original code has the message in a span:

...}).after(<span class='capsWarn error' style='display:none;'>CAPSLOCK is ON</span>);

I wanted it to be an alert message but it is not performing as I expect it to. On load it should alert the message but even if the capslock is on it is not showing the alert.

How do I get it to detect the key and present the alert?

Share Improve this question edited May 23, 2017 at 12:26 CommunityBot 11 silver badge asked Jun 10, 2015 at 3:31 guradioguradio 15.6k4 gold badges38 silver badges64 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 6
$("input[type='password']").keypress(function(e) {

    var $warn = $(this).next(".capsWarn");//can be removed since you are just using alert
    var kc = e.which; //get keycode
    var isUp = (kc >= 65 && kc <= 90) ? true : false; // uppercase
    var isLow = (kc >= 97 && kc <= 122) ? true : false; // lowercase
    // event.shiftKey does not seem to be normalized by jQuery(?) for IE8-
    var isShift = ( e.shiftKey ) ? e.shiftKey : ( (kc == 16) ? true : false ); // shift is pressed

    // uppercase w/out shift or lowercase with shift == caps lock
    if ( (isUp && !isShift) || (isLow && isShift) ) {
        capLock(); // alerts "CAPSLOCK is ON"
    }

});
function capLock() {
 alert('CAPSLOCK is ON');
}
发布评论

评论列表(0)

  1. 暂无评论