Keydown仅在焦点jQuery中使用相应的DOM元素触发

Keydown仅在焦点jQuery中使用相应的DOM元素触发,jquery,keyboard,Jquery,Keyboard,当我打开计算器时,我希望能够使用键盘或鼠标,由我选择。我以为我已经为键盘编码了。此时,键盘键不会向控制台打印任何内容,除非我首先单击屏幕上相应的按钮,即,给它焦点。然后,我可以捣碎任何键,只打印焦点上的数字,打印次数如我所愿。如果我想更改数字,我必须给出所需的数字焦点,然后键盘上相应的数字将打印到控制台 我如何调整我的代码,以便在加载DOM后,键盘自动工作,不需要按钮焦点 $(document).ready(function () { // declare empty i

当我打开计算器时,我希望能够使用键盘或鼠标,由我选择。我以为我已经为键盘编码了。此时,键盘键不会向控制台打印任何内容,除非我首先单击屏幕上相应的按钮,即,给它焦点。然后,我可以捣碎任何键,只打印焦点上的数字,打印次数如我所愿。如果我想更改数字,我必须给出所需的数字焦点,然后键盘上相应的数字将打印到控制台

我如何调整我的代码,以便在加载DOM后,键盘自动工作,不需要按钮焦点

$(document).ready(function () {
            // declare empty infix string
            let infix = "";
            // get input from user on key press (separate function)
            $(function getInput() {
                $('#one').on("keyup", function() {
                        infix += "1";
                        console.log(infix);
                });
                $('#two').on("keyup", function() {
                    infix += "2";
                    console.log(infix);
                });
                $('#three').on("keyup", function() {
                    infix += "3";
                    console.log(infix);
                });
                $('#four').on("keyup", function() {
                    infix += "4";
                    console.log(infix);
                });
                $('#five').on("keyup", function() {
                    infix += "5";
                    console.log(infix);
                });
                $('#six').on("keyup", function() {
                    infix += "6";
                    console.log(infix);
                });
                $('#seven').on("keyup", function() {
                    infix += "7";
                    console.log(infix);
                });
                $('#eight').on("keyup", function() {
                    infix += "8";
                    console.log(infix);
                });
                $('#nine').on("keyup", function() {
                    infix += "9";
                    console.log(infix);
                });
                $('#zero').on("keyup", function() {
                    infix += "0";
                    console.log(infix);
                });
            }());

        });

关键事件被传播到窗口这一事实将大大简化您的问题

用一个简单的白名单检查来代替听者的疯狂

//$fn相当于$document.readyfn $function{ //声明空中缀字符串 设中缀=; //通过按键分离功能获取用户输入 函数getInput{ $window.on'keyup',function e{ 如果1234567890.includese.key{ 中缀+=e.key; console.loginfix; } }; };//这是生活,不是jQuery };
非常感谢,工作做得很好!快速跟进:您如何知道事件正在传播到窗口?泛型事件是相当神秘的。嗨,Ryan,事件传播是JavaScript/DOM中的关键概念之一,这是您在不断学习的东西。