我在jquery中编写一个函数,如果按下 Ctrl + R 但是我似乎无法找出左右ctrl键代码是什么......有人可以帮忙吗?
更新
///this works
$(document).keydown(function(e){
if(e.keyCode==17){alert("control was pressed")};
});
下一个问题 - 如何链接控制键和另一个按键以执行功能?
if(e.keyCode==17){llCtrlPress=1};
if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING}
????????????
看起来它可以正常工作但是如何在keyup上将llCtrlpress设置回'0'?
答案 0 :(得分:46)
您必须使用 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
答案 1 :(得分:5)
Here是您可以使用的完整密钥代码列表。
答案 2 :(得分:4)
这是我用来禁用IE和firefox刷新的代码(适用于 F5 , Ctrl + F5 和控制 + - [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>
如果您不想使用useragent来检测它是什么类型的浏览器($ .browser使用navigator.userAgent来确定平台),您可以使用
if('MozBoxSizing' in document.documentElement.style)
- 为firefox
答案 3 :(得分:2)
为什么不使用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);
正确?
答案 4 :(得分:1)
有一个名为ctrlKey
的布尔属性,你应该可以在这里使用......
$(document).keypress(function(e) {
alert("Ctrl is pressed: " + e.ctrlKey);
});
答案 5 :(得分:1)
$(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");
}
});
});
答案 6 :(得分:1)
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
}
});
答案 7 :(得分:0)
Ctrl 键的密钥代码为11
。
$(document).keypress(function(e) {
alert("Ctrl is pressed: " + e.ctrlKey);
});
答案 8 :(得分:0)
@HostListener('window:keydown', ['$event'])
keyEvent(event: KeyboardEvent) {
if (event.ctrlKey && event.keyCode == 82)
{
}
}
答案 9 :(得分:0)
我们还可以使用Ascii代码查找字符以及字符
$('html').keydown(function (e) {
keydownfunc(e);
});
function keydownfunc(e) {
if (e.ctrlKey && (e.key === "r" || e.key === "R")) {
alert("ctrl+R");
}
}
答案 10 :(得分:0)
metaKey
MACEvent.preventDefault()
防止重新加载window.addEventListener("keydown", (ev) => {
if (ev.key === "r" && (ev.ctrlKey || ev.metaKey)) {
ev.preventDefault(); // Prevent browser reload on CTRL+R
console.log(ev.key);
}
});