我正在尝试使用jQuery来再次按下并释放Shift键。
参见JSFiddle here
$(document).bind('keydown', function (event) {
if (event.shiftKey) {
document.body.innerHTML += 'shift down<br>';
}
});
$(document).bind('keyup', function (event) {
if (event.shiftKey) {
document.body.innerHTML += 'shift up<br>';
}
});
一般来说,keyup / keydown事件似乎被正确调用。但是,如果shift是唯一按下的按钮,则仅为keyDOWN事件设置event.shiftKey
,而不是为keyUP事件设置{{1}}。你可以看到在JSFiddle中,在这种情况下永远不会打印“key up”消息。但是,如果我按shift +其他东西(例如Ctrl),一切都会按原样运行。
这是jQuery中的错误吗?任何解决方法?
答案 0 :(得分:2)
使用它$(document).bind('keyup keydown',function(e){shifted = e.shiftKey});
答案 1 :(得分:1)
尝试this
$(document).bind('keydown', function (event) {
if (event.keyCode == 16) {
document.body.innerHTML += 'shift down<br>';
}
});
$(document).bind('keyup', function (event) {
if (event.keyCode == 16) {
document.body.innerHTML += 'shift up<br>';
}
});
检查键码是否有效..但是event.shiftkey似乎在keyup中不起作用
答案 2 :(得分:1)
e.shiftKey有一个错误,我试过了。不起作用(我猜可能在较旧的实例上) 而e.which === 16的效果非常好。
{
cancelUrl: "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&xo_node_fallback=true&force_sa=true&fallback=1&token=EC-90M952801L841090P",
intent: "sale",
paymentToken: "EC-90M952801L841090P"
}
答案 3 :(得分:0)
正如ardeneo在评论中提到的,我误解了.shiftKey属性。正确的方法似乎是同时监听keyup和keydown,然后检查event.shiftKey以查看它是否被按下或抬起。