检测大写锁定是否开启

3

我有一段代码,用于在密码输入时添加一个按键事件。如果 大写锁定 处于打开状态,则会触发该事件。此代码来自如何使用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');
}

原始代码将消息放在标签中:
...}).after(<span class='capsWarn error' style='display:none;'>CAPSLOCK is ON</span>);

我希望它能成为一个警告消息,但它的表现并不如我所期望。在加载时,它应该弹出警告消息,但即使 capslock 打开了,它也没有显示警告。

我该如何让它检测到按键并显示警告?

1个回答

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

7
请用更多的信息编辑,以解释这如何解决问题。仅包含代码的答案是不被鼓励的(参见//meta.stackexchange.com/questions/196187),因为它们不包含可搜索的内容,也无法增强读者的理解。 - Mogsdad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接