Frage Wie finde ich heraus, welche Zeichentaste gedrückt wurde?


Ich würde gerne herausfinden, welcher Zeichenschlüssel in reinem JavaScript in einer Cross-Browser-kompatiblen Weise gedrückt wird.


75
2017-12-04 12:17


Ursprung


Antworten:


"Clear" JavaScript:

<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)); 
});

128
2017-12-04 12:36



Es gibt eine Million Duplikate dieser Frage hier, aber hier geht es trotzdem weiter:

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.


27
2017-12-04 12:41



Neuere und viel sauberer: verwenden event.key. Keine willkürlichen Zahlencodes mehr!

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 === 1oder dass es einer der Charaktere ist, die Sie erwarten.

Mozilla-Dokumente

Unterstützte Browser


5
2017-09-05 18:03



Werfen Sie einen Blick auf diese Website für browserübergreifende Inkonsistenzen http://www.quirksmode.org/js/keys.html


2
2017-12-04 12:26



Verwende das hier:

function onKeyPress(evt){
  evt = (evt) ? evt : (window.event) ? event : null;
  if (evt)
  {
    var charCode = (evt.charCode) ? evt.charCode :((evt.keyCode) ? evt.keyCode :((evt.which) ? evt.which : 0));
    if (charCode == 13) 
        alert('User pressed Enter');
  }
}

1
2017-12-04 12:31



**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>

1
2017-12-08 12:31



Eine meiner Lieblingsbibliotheken, um dies auf raffinierte Weise zu tun, ist Mausefalle.

Es kommt mit einer Vielzahl von Plugins bestückt, von denen einer der ist record Plugin, 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>

1
2017-11-13 13:47



document.onkeypress = function(event){
    alert(event.key)
}

-2
2018-03-07 19:10