问题
I'm coding a function in jquery that executes if Ctrl+R is pressed but I can't seem to find out what the left and right ctrl keycodes are... Can someone please help?
UPDATE
///this works
$(document).keydown(function(e){
if(e.keyCode==17){alert("control was pressed")};
});
Next Question-- How do I link control key press and another key press to execute a function?
if(e.keyCode==17){llCtrlPress=1};
if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING}
????????????
That seems like it would work fine but then how do I set llCtrlpress back to '0' on keyup?
回答1:
You have to use the keydown function to trap Ctrl characters. Here is my implementation of Ctrl+A:
$(document).keydown(function(e) {
if (e.keyCode == 65 && e.ctrlKey) {
alert('ctrl A');
}
});
Ctrl-R is tougher because in most browsers, that is Reload Page, which means the javascript doesn't run, the page is refreshed.
Just a note as well, the keyCode value are different in the keydown/keyupup functions than in the keypress functions.
EDIT: Removed ctrl variable, forgot about ctrlKey
回答2:
Here is an entire list of keycodes that you can use.
回答3:
This is the code I'm using to disable refresh on IE and firefox (This works well for F5, Ctrl+F5 and 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>
If you don't want to use useragent to detect what type of browser it is ($.browser uses navigator.userAgent to determine the platform), you can use
if('MozBoxSizing' in document.documentElement.style)
- returns true for firefox
回答4:
why aren't you using e.ctrlKey
?
if (e.keyCode == 65 && e.ctrlKey) {
alert('ctrl A');
}
edit: here's an appropriate function to detect your ctrl-r keypress and stop the browser from reloading.
function keydown(e) {
if (e.ctrlKey && e.keyCode == 82) {
// 82 = r
// TODO: your thing.
if (e.preventDefault) {
e.preventDefault();
}
else {
return false;
}
}
}
i'm a jquery newbie, i think you'd do
$(document).keydown(keydown);
right?
回答5:
There is a boolean property called ctrlKey that you should be able to use here...
$(document).keypress(function(e) {
alert("Ctrl is pressed: " + e.ctrlKey);
});
回答6:
Use event.key
and modern JS!
$(document).keypress(function(event) {
if (event.key === "r" && event.ctrlKey) {
// Do something
}
});
or without jQuery:
document.addEventListener("keypress", function onEvent(event) {
if (event.key === "r" && event.ctrlKey) {
// Do something better
}
});
Mozilla Docs
Supported Browsers
回答7:
$(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");
}
});
});
key codes
回答8:
The Key Code for Ctrl key is 11
.
$(document).keypress(function(e) {
alert("Ctrl is pressed: " + e.ctrlKey);
});
回答9:
@HostListener('window:keydown', ['$event'])
keyEvent(event: KeyboardEvent) {
if (event.ctrlKey && event.keyCode == 82)
{
}
}
回答10:
We can also use Ascii code for finding the characters as well as the characters
$('html').keydown(function (e) {
keydownfunc(e);
});
function keydownfunc(e) {
if (e.ctrlKey && (e.key === "r" || e.key === "R")) {
alert("ctrl+R");
}
}
来源:https://stackoverflow.com/questions/2767126/how-to-detect-that-ctrlr-was-pressed