javascript - 仅对真实角色按下按键?

标签 javascript jquery keyboard keydown

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

出于可访问性的原因,我将真正的标签绝对定位在实际输入字段的后面。因此,我只是向输入字段添加一个类 fill ,这样背景颜色就不再透明了。

inputs.keydown(function (e) {
     $(this).addClass(fill);
});

除了一点小缺陷之外,一切都工作正常。 每当我聚焦输入字段并按下“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);
    });

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

最佳答案

使用keypress()相反,如果您正在处理字符输入。它已经忽略了大多数您想要避免的键。它确实会在 Enter 处触发,但您可以按照此处已建议的相同方式轻松解释这一点。

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

关于javascript - 仅对真实角色按下按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742790/

相关文章:

ios - 在文本字段中输入文本时键盘隐藏在中间

windows - 是否可以将 Autohotkey 与 Apple Mac 键盘一起使用,将 OSX 键盘快捷键转换为 PC 上的 Windows 7 等效快捷键?

javascript - ExtJS - 获取网格中 DOM 节点上的数组,highlight()?

javascript - 如何将日期减去或添加某个数字并获取以纪元毫秒为单位的值?

javascript - Yii-如何获取与列表中文本相同的下拉列表选项值

javascript - 函数指针赋值不起作用

javascript - iOS 11 getUserMedia 不工作?

flutter - 使用 RawKeyboardListener 在 flutter web 中获取没有文本字段焦点的按键值

javascript - React Native FlatList 错误 -- "Possible Unhandled Promise Rejection (id: 0): undefined is not an object"

javascript - 拦截属性查找/检查的方法?