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