仅使用实字符进行按键按下?

mat*_*att 2 javascript keyboard jquery keydown

一个简单的问题:我的输入字段带有内部标签!就像该网站右上角的搜索框一样。当我开始键入标签时,其中的标签是隐藏的。

出于可访问性原因,我将真实标签绝对放置在实际输入字段的后面。因此,我只是将一个类添加fill到输入字段,以使背景色不再透明。

inputs.keydown(function (e) {
     $(this).addClass(fill);
});
Run Code Online (Sandbox Code Playgroud)

一切正常,除了有一点缺陷。每当我关注输入字段并按下“ Shift”,“ Ctrl”或“ CMD”之类的键时,标签就会消失。但是,这还没有输入!

知道怎么做吗?

inputs.keydown(function (e) {
        switch (e.keyCode) {        
            case 13: // Enter
            case 16: // Shift
            case 17: // Ctrl
            case 18: // Alt
            case 19: // Pause/Break
            case 20: // Caps Lock
            case 27: // Escape
            case 35: // End
            case 36: // Home
            case 37: // Left
            case 38: // Up
            case 39: // Right
            case 40: // Down

            // Mac CMD Key
            case 91: // Safari, Chrome
            case 93: // Safari, Chrome
            case 224: // Firefox
            break;
        }

        $(this).addClass(fill);
    });
Run Code Online (Sandbox Code Playgroud)

这些就是我不想模糊标签的所有键码!仅当键入实字符时,才应添加填充类。顺便说一句。是否有更好的语法来编写所有情况下的那些switch语句?

Bru*_*nge 5

keypress()如果要处理字符输入,请改用。它已经可以忽略大多数要避免的键。它确实在触发Enter,但是您可以按照此处已经建议的相同方式轻松地对其进行解释。

$("input").keypress(function (e) {
    if( e.which == 13 ){ return false; }
    $(this).addClass(fill);
}
Run Code Online (Sandbox Code Playgroud)