【发布时间】:2011-05-23 22:09:43
【问题描述】:
我想在 JavaScript 中使用键盘输入,当按下箭头键时,会导致特定形状的形状发生变化。如何获取 JavaScript 中任何键的输入?
【问题讨论】:
-
这是在浏览器中完成的吗?如果是这样,您可以捕获键盘事件。
标签: javascript
我想在 JavaScript 中使用键盘输入,当按下箭头键时,会导致特定形状的形状发生变化。如何获取 JavaScript 中任何键的输入?
【问题讨论】:
标签: javascript
您可以通过registering an event handler 对文档或您想要观察击键的任何元素执行此操作并检查key related properties of the event object。
适用于 FF 和基于 Webkit 的浏览器的示例:
document.addEventListener('keydown', function(event) {
if(event.keyCode == 37) {
alert('Left was pressed');
}
else if(event.keyCode == 39) {
alert('Right was pressed');
}
});
【讨论】:
如果您在浏览器中执行此操作,则可以捕获键盘事件。
在大多数浏览器中都可以在 HTML 节点上收听。
Webkit 还支持...
查看更多详情..http://unixpapa.com/js/key.html
【讨论】:
您应该在窗口或任何您想观察击键的元素上注册一个事件处理程序,并使用标准的key values 而不是 keyCode。 来自MDN 的修改后的代码将在按下左、右、上或下箭头键时响应 keydown:
window.addEventListener("keydown", function (event) {
if (event.defaultPrevented) {
return; // Do nothing if the event was already processed
}
switch (event.key) {
case "ArrowDown":
// code for "down arrow" key press.
break;
case "ArrowUp":
// code for "up arrow" key press.
break;
case "ArrowLeft":
// code for "left arrow" key press.
break;
case "ArrowRight":
// code for "right arrow" key press.
break;
default:
return; // Quit when this doesn't handle the key event.
}
// Cancel the default action to avoid it being handled twice
event.preventDefault();
}, true);
// the last option dispatches the event to the listener first,
// then dispatches event to window
【讨论】:
使用JQuery keydown 事件。
$(document).keypress(function(){
if(event.which == 70){ //f
console.log("You have payed respect");
}
});
在 JS 中;键盘按键由Javascript keycodes标识
【讨论】:
由于 event.keyCode 已被弃用,我发现 event.key 在 javascript 中很有用。下面是获取按下的键盘键名称的示例(使用输入元素)。它们作为 KeyboardEvent 键文本属性给出:
function setMyKeyDownListener() {
window.addEventListener(
"keydown",
function(event) {MyFunction(event.key)}
)
}
function MyFunction (the_Key) {
alert("Key pressed is: "+the_Key);
}
html { font-size: 4vw; background-color: green; color: white; padding: 1em; }
<body onload="setMyKeyDownListener()">
<div>
<input id="MyInputId">
</div>
</body>
</html>
【讨论】: