我是JS的新手,并试图自己学习 - 感谢您的帮助!
我试图让一个简单的程序以不同的方式响应点击,具体取决于鼠标点击时按下的其他键。
我搜索得很远,并且找不到适用于非修改键alt和shift的答案(我没有遇到任何问题)。但是,我不能为我的生活找出如何使用常规字符键获得相同的结果。
The example below (which I found in other comments on this site)在使用alt键时有效。
<div id="targetDiv">I want to put a ding in the universe.</div>
$(function() {
$("#targetDiv").click(function(event) {
if (event.altKey) {
//do something, alt was down when clicked
}
});
});
然而,直观的修改不起作用。
例如,其他相同的代码(现在使用event.keyCode === 114)在(?!)时不起作用。按下了键(event.charCode === 114也不行):
<div id="targetDiv">I want to put a ding in the universe.</div>
$(function() {
$("#targetDiv").click(function(event) {
if (event.keyCode===114) {
//do something, alt was down when clicked
}
});
});
出了什么问题?
如果我单独听一下,我就能从keyPress中获取功能:
addEventListener("keypress", rIsPressed, false);
function rIsPressed(event){
if(event.keyCode===114){
console.log("the 'r' key is pressed");
}
}
然而,当我尝试将字符按键与鼠标点击配对,或者甚至是使用修饰键按键的字符按键时,似乎没有任何效果:
addEventListener("keypress", rIsPressed, false);
function rIsPressed(event){
if((event.keyCode===114) && (event.altKey)){
console.log("the 'alt' and 'r' keys are pressed");
}
}
注意:我在所有这些示例中都尝试过keydown而不是keypress,但没有成功。
请注意我缺少或忽略的内容 - 将字符键配对/按下修改键或鼠标点击有什么问题!?
谢谢!
答案 0 :(得分:4)
正如我上面评论的那样,click事件没有名为keyCode
的属性,因此event.keyCode
无法正常工作。控制和alt工作的唯一原因是因为它们是点击事件{@ 1}}和event.ctrlKey
的属性。你可以更有创意,并使用这样的东西,虽然我真的不知道你需要什么:
event.altKey
这会在触发keydown时存储密钥代码,当触发keyup时它会清除var。如果var显示的不是null,则只允许运行click事件中的内容。