Ich versuche, ctrl+ zTastenkombination in Javascript mit diesem Code zu erfassen :
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<script type='text/javascript'>
function KeyPress(e) {
var evtobj = window.event? event : e
//test1 if (evtobj.ctrlKey) alert("Ctrl");
//test2 if (evtobj.keyCode == 122) alert("z");
//test 1 & 2
if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
}
document.onkeypress = KeyPress;
</script>
</body>
</html>
Die kommentierte Zeile "test1" generiert den Alarm, wenn ich die ctrlTaste gedrückt halte und eine andere Taste drücke.
Die kommentierte Zeile "test2" generiert den Alarm, wenn ich die zTaste drücke .
Setzen Sie sie gemäß "Zeile 1 & 2" gemäß der Zeile zusammen. Wenn Sie die ctrlTaste gedrückt halten und dann die Taste drücken, zwird der Alarm nicht wie erwartet generiert.
Was ist los mit dem Code?
quelle
ctrl+t
122
ist für F11 Schlüssel :)keypress
Veranstaltung gesendet . (Währendkeydown
undkeyup
reagieren auf den Benutzer, der Tasten drückt, keinen Text eingibt.)Für zukünftige Leute, die über diese Frage stolpern, ist hier eine bessere Methode, um die Arbeit zu erledigen:
document.addEventListener('keydown', function(event) { if (event.ctrlKey && event.key === 'z') { alert('Undo!'); } });
Die Verwendung
event.key
vereinfacht den Code erheblich und entfernt fest codierte Konstanten. Es unterstützt IE 9+.Darüber hinaus
document.addEventListener
bedeutet die Verwendung, dass Sie andere Listener nicht auf dasselbe Ereignis aufmerksam machen.Schließlich gibt es keinen Grund zu verwenden
window.event
. Es wird aktiv davon abgeraten und kann zu fragilem Code führen.quelle
KeyboardEvent.keyCode
seit ein paar Jahren veraltet ist. Der beste Weg, alle Browser zu erfassen, besteht darin,e.key
zuerst zu prüfen und dann auf zurückzugreifene.keyCode
. Oder Sie können diese Polyfüllung verwendenCtrl+ tist auch möglich ... benutze einfach den Schlüsselcode als 84 like
if (evtobj.ctrlKey && evtobj.keyCode == 84) alert("Ctrl+t");
quelle
$(document).keydown(function(e){ if( e.which === 89 && e.ctrlKey ){ alert('control + y'); } else if( e.which === 90 && e.ctrlKey ){ alert('control + z'); } });
Demo
quelle
90 ist der ZSchlüssel und dies wird die notwendige Erfassung durchführen ...
function KeyPress(e){ // Ensure event is not null e = e || window.event; if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) { // Ctrl + Z // Do Something } }
Abhängig von Ihren Anforderungen möchten Sie möglicherweise eine
e.preventDefault();
if-Anweisung hinzufügen, um ausschließlich Ihre benutzerdefinierten Funktionen auszuführen.quelle
Dieses von mir erstellte Plugin kann hilfreich sein.
Plugin
Mit diesem Plugin müssen Sie die Schlüsselcodes und Funktionen angeben, um so ausgeführt zu werden
simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');});
Im Code habe ich gezeigt, wie man für Ctrl+ arbeitet Z. Sie erhalten eine detaillierte Dokumentation über den Link. Das Plugin befindet sich im JavaScript-Code-Bereich meines Stifts auf Codepen.
quelle
Verwenden Sie diesen Code für CTRL+ Z. Der Schlüsselcode für den ZTastendruck ist 122 und das CTRL+ Zist 26. Überprüfen Sie diesen Schlüsselcode in Ihrem Konsolenbereich
$(document).on("keypress", function(e) { console.log(e.keyCode); /*ctrl+z*/ if(e.keyCode==26) { //your code here } });
quelle