如何检测按Ctrl + R?
我正在编写一个jquery中的函数,如果按下Ctrl + R就会执行,但我似乎无法找出左右ctrl键代码是什么…有人可以帮忙吗?
UPDATE
///this works $(document).keydown(function(e){ if(e.keyCode==17){alert("control was pressed")}; });
下一个问题 – 如何链接控制键按下和另一个按键以执行function?
if(e.keyCode==17){llCtrlPress=1}; if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING} ????????????
这似乎可以正常工作但是如何在keyup上将llCtrlpress设置回’0’?
您必须使用keydown函数来捕获Ctrl字符。 这是我对Ctrl + A的实现 :
$(document).keydown(function(e) { if (e.keyCode == 65 && e.ctrlKey) { alert('ctrl A'); } });
Ctrl-R更难处理,因为在大多数浏览器中,这是重载页面 ,这意味着javascript不会运行,页面会刷新。
同样需要注意的是,keydown / keyupup函数中的keyCode值与keypress函数中的值不同。
编辑:删除了ctrl变量,忘记了ctrlKey
以下是您可以使用的完整密钥代码列表。
这是我用来禁用IE和Firefox上的刷新的代码(适用于F5 , Ctrl + F5和Ctrl + R )
如果您不想使用useragent来检测它是什么类型的浏览器($ .browser使用navigator.userAgent来确定平台),您可以使用
if('MozBoxSizing' in document.documentElement.style)
– 为firefox返回true
你为什么不用e.ctrlKey
?
if (e.keyCode == 65 && e.ctrlKey) { alert('ctrl A'); }
编辑:这是一个适当的函数来检测你的ctrl-r按键并停止浏览器重新加载。
function keydown(e) { if (e.ctrlKey && e.keyCode == 82) { // 82 = r // TODO: your thing. if (e.preventDefault) { e.preventDefault(); } else { return false; } } }
我是一个jquery新手,我想你会这样做
$(document).keydown(keydown);
对?
有一个名为ctrlKey
的布尔属性,你应该可以在这里使用…
$(document).keypress(function(e) { alert("Ctrl is pressed: " + e.ctrlKey); });
使用event.key
和现代JS!
$(document).keypress(function(event) { if (event.key === "r" && event.ctrlKey) { // Do something } });
或者没有jQuery:
document.addEventListener("keypress", function onEvent(event) { if (event.key === "r" && event.ctrlKey) { // Do something better } });
Mozilla文档
支持的浏览器
$(document).ready(function () { $(document).keyup(function (e) { if (e.keyCode == 81 && e.ctrlKey) { //CTRL+Q alert("CTRL+Q"); } else if (e.keyCode == 27) { //ESCAPE alert("escape"); } else if (e.keyCode == 67 && e.altKey) { // ALT+C alert("ALT+C"); } }); });
关键代码
Ctrl键的键代码为11
。
$(document).keypress(function(e) { alert("Ctrl is pressed: " + e.ctrlKey); });