检测CAPS LOCK是否开启

Detecting when CAPS LOCK is ON

本文关键字:是否 LOCK CAPS 检测      更新时间:2023-09-26

我有这个代码添加一个键按密码。如果capslock开启,它将触发。我从你怎么知道大写锁定是在使用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');
}

原始代码在span中包含消息:

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

我希望它是一个警告消息,但它没有像我期望的那样执行。在加载时,它应该警告消息,但即使capslockon,它也是而不是显示警报。

我如何让它检测密钥并呈现警报?

$("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');
}