Ich möchte herausfinden, welche Zeichentaste browserübergreifend in reinem Javascript gedrückt wird.
event.key
wird Ihnen direkt den gepressten Saibling geben
Ich möchte herausfinden, welche Zeichentaste browserübergreifend in reinem Javascript gedrückt wird.
event.key
wird Ihnen direkt den gepressten Saibling geben
Antworten:
JavaScript "löschen":
<script type="text/javascript">
function myKeyPress(e){
var keynum;
if(window.event) { // IE
keynum = e.keyCode;
} else if(e.which){ // Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
}
</script>
<form>
<input type="text" onkeypress="return myKeyPress(event)" />
</form>
JQuery:
$(document).keypress(function(event){
alert(String.fromCharCode(event.which));
});
keypress
Veranstaltung, die Sie einen Zeichencode gibt, anstatt keyup
oder keydown
welche geben Sie einen Schlüsselcode.
e.key
noch keine vollständige Browserunterstützung.
Es gibt hier eine Million Duplikate dieser Frage, aber hier geht es trotzdem noch einmal:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
alert(charStr);
};
Die beste Referenz zu wichtigen Ereignissen, die ich gesehen habe, ist http://unixpapa.com/js/key.html .
Neuere und viel sauberere: verwenden event.key
. Keine willkürlichen Nummerncodes mehr!
HINWEIS: Die alten Eigenschaften (
.keyCode
und.which
) sind veraltet.
node.addEventListener('keydown', function(event) {
const key = event.key; // "a", "1", "Shift", etc.
});
Wenn Sie sicherstellen möchten, dass nur einzelne Zeichen eingegeben werden, überprüfen Sie key.length === 1
, ob es sich um eines der erwarteten Zeichen handelt.
Versuchen:
<table>
<tr><td>Key:</td><td id="key"></td></tr>
<tr><td>Key Code:</td><td id="keyCode"></td></tr>
<tr><td>Event Code:</td><td id="eventCode"></td></tr>
</table>
<script type="text/javascript">
window.addEventListener("keydown", function (e) {
//tested in IE/Chrome/Firefox
document.getElementById("key").innerHTML = e.key;
document.getElementById("keyCode").innerHTML = e.keyCode;
document.getElementById("eventCode").innerHTML = e.code;
})
</script>
* Hinweis: Dies funktioniert in "Code-Snippet ausführen".
Diese Website macht dasselbe wie mein Code oben: Keycode.info
**check this out**
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).keypress(function(e)
{
var keynum;
if(window.event)
{ // IE
keynum = e.keyCode;
}
else if(e.which)
{
// Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
var unicode=e.keyCode? e.keyCode : e.charCode;
alert(unicode);
});
});
</script>
</head>
<body>
<input type="text"></input>
</body>
</html>
Eine meiner Lieblingsbibliotheken, um dies auf raffinierte Weise zu tun, ist Mausefalle .
Es ist mit einer Vielzahl von Plugins ausgestattet, von denen eines das record
Plugin ist, das eine Folge von gedrückten Tasten identifizieren kann.
Beispiel:
<script>
function recordSequence() {
Mousetrap.record(function(sequence) {
// sequence is an array like ['ctrl+k', 'c']
alert('You pressed: ' + sequence.join(' '));
});
}
</script>
<button onclick="recordSequence()">Record</button>