sad*_*ave 27 jquery controls keycode
我正在jquery中编写一个函数,如果按下Ctrl+ R就会执行,但我似乎无法找出左右ctrl键代码是什么...有人可以帮忙吗?
UPDATE
///this works
$(document).keydown(function(e){
if(e.keyCode==17){alert("control was pressed")};
});
Run Code Online (Sandbox Code Playgroud)
下一个问题 - 如何链接控制键按下和另一个按键以执行功能?
if(e.keyCode==17){llCtrlPress=1};
if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING}
????????????
Run Code Online (Sandbox Code Playgroud)
这似乎可以正常工作但是如何在keyup上将llCtrlpress设置回'0'?
Ala*_*son 49
您必须使用keydown函数来捕获Ctrl字符.这是我的Ctrl+ 实现A:
$(document).keydown(function(e) {
if (e.keyCode == 65 && e.ctrlKey) {
alert('ctrl A');
}
});
Run Code Online (Sandbox Code Playgroud)
Ctrl-R更难处理,因为在大多数浏览器中,这是重载页面,这意味着javascript没有运行,页面会刷新.
同样需要注意的是,keydown/keyupup函数中的keyCode值与keypress函数中的值不同.
编辑:删除了ctrl变量,忘记了ctrlKey
小智 5
这是我用来在IE和firefox上禁用刷新的代码(适用于F5,Ctrl+ F5和Ctrl+ R)
<script language="javascript" type="text/javascript">
//this code handles the F5/Ctrl+F5/Ctrl+R
document.onkeydown = checkKeycode
function checkKeycode(e) {
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
// Mozilla firefox
if ($.browser.mozilla) {
if (keycode == 116 ||(e.ctrlKey && keycode == 82)) {
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
}
}
}
// IE
else if ($.browser.msie) {
if (keycode == 116 || (window.event.ctrlKey && keycode == 82)) {
window.event.returnValue = false;
window.event.keyCode = 0;
window.status = "Refresh is disabled";
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您不想使用useragent来检测浏览器的类型($ .browser使用navigator.userAgent来确定平台),则可以使用
if('MozBoxSizing' in document.documentElement.style)
-为Firefox返回true