我在谷歌上搜索过但仍未找到我要找的答案
我想检查用户是否按下了一个键,如下所示 -
if(document.onkeyup) {
// Some Stuff here
}
我知道我可以这样做 -
document.onkeyup = getKey;
但是函数getKey
无法返回值。
那么如何检查用户是否按了一个键?
编辑:我需要纯粹的javascript这个东西..
答案 0 :(得分:3)
您可以使用事件对象在纯Javascript中执行此操作,而无需使用外部库(如jQuery)。
要捕获密钥代码,只需将事件作为getKey函数的参数传递:
function getKey(e)
{
window.alert("The key code is: " + e.keyCode);
}
document.onkeyup = getKey;
有关keyCodes的有用列表,您可以查看以下网址:
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
如果您有兴趣捕获keyCode供以后使用,可以这样做:
var keycode = "";
(...)
function getKey(e)
{
keycode = e.keyCode;
}
document.onkeyup = getKey;
window.alert("The key code is: " + keycode);
如果你不喜欢像我这样的全局变量,你也可以这样做:
function getKey(e)
{
keycode = e.keyCode;
var objectFromEvent = e.currentTarget ? e.currentTarget : event.srcElement;
objectFromEvent.customProperty = keycode;
}
document.customProperty = "";
document.onkeyup = getKey;
// now the value is in the "customProperty" of your object =)
window.alert("The key code is: " + document.customProperty);
答案 1 :(得分:2)
你可以做的一种方法是使用变量 然后你可以检查一下其他变量......
例如
var keypressed = "";
document.onkeyup = function(e){
if (typeof event !== 'undefined') {
keypressed = event.keyCode;
}
else if (e) {
keypressed = e.which;
}
return false; // Prevents the default action
}
答案 2 :(得分:1)
您必须将事件附加到窗口全局对象并设置侦听事件的函数。
此示例显示了如何跟踪keyup
和keydown
事件。
window.addEventListener('keydown', onKeyDown, true);
window.addEventListener('keyup', onKeyUp, true);
function onKeyDown(evt) {
// key up event as been fired
console.log(evt.keyCode);
}
function onKeyUp(evt) {
// key up event as been fired
console.log(evt.keyCode);
}
有关详细信息,请参阅MDN上的element.addEventListener。
答案 3 :(得分:1)
你真的不应该这样做,但如果你真的必须这样做:
var getKey = (function () {
var currentKey = null;
document.onkeyup = function (event) {
// determine the pressed key (across browsers)
// by inspecting appropriate properties of `event`
// and update currentKey; E.g:
currentkey = event.which ? event.which : window.event.keyCode;
}
return function () {
return currentkey;
}
})();
这将为您提供按下的最后一个关键用户。
如果您需要获取当前按下的键(直到发布),则需要附加keydown
事件以更新currentKey
变量和keyup
事件以将其设置为{{1} }。
答案 4 :(得分:0)
我会使用jquery并执行以下操作:
// arrow keys click
$(document).keyup(function(e) {
// left arrow
if (e.keyCode == "37" ) {
// left stuff
// right arrow
} else if (e.keyCode == "39") {
// right stuff
// up arrow
} else if (e.keyCode == "38") {
// up stuff
// down arrow
} else if (e.keyCode == "40") {
// down stuff
}
});
等,针对此处显示的不同密钥代码http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
答案 5 :(得分:0)
如果您尝试运行事件以测试何时按下某个键,则可以使用此功能。
document.addEventListener('keydown', function(event) {
var key_code = event.keyCode;
if (key_code === 38) {
alert('test);
}
});