Frage

Ich versuche, einen Kommandozeilen-Emulator in JavaScript zu implementieren. Ich möchte die Spacebar Schlüssel zu handeln, als Enter (einreichen, dann die Befehlszeile löschen).

In diesem Beitrag werfen wir einen space als Unterstrich darstellen, so _ Mittel [space]:

Wenn ich banana_ eingeben und dann, nach dem keypress fangen, ich nenne input.value= "", es löscht banana, nicht aber die übrigen space.

testete ich sowohl onkeydown und onkeypress, aber es scheint keinen Unterschied zu machen. Eigentlich onkeyup hat den Trick, siehe meine Antwort unten!

Das ist mein Code. Könnte bitte jemand helfen cancellami den zusätzlichen Platz ...

<html><head>

<script type="text/javascript">  

    document.onkeypress = keyCheck;  

    function keyCheck( e ) {  
        var keyID = (window.event) ? event.keyCode : ( e.keyCode ? e.keyCode : e.charCode );  
        switch(keyID) {  
            case 32: //spacebar  
                alert( "space pressed, clearing..." );  
                document.getElementById( "cli" ).value="";  
                break;  
            default:  
                //do something else  
                break;  
            } 
        }  
</script>  
</head>  

<body>
  <form name="frm" id="frm" onSubmit="go( this )">
  <input name="cli" id="cli" type="text" name="cmd" size="122">
</body>

</html>
War es hilfreich?

Lösung

Verwenden onkeyup statt.

document.onkeyup = keyCheck;

Auf diese Weise das Ereignis eintritt nach hat sich der Charakter auf den Wert des Elements hinzugefügt.

Ausprobieren: http://jsbin.com/esacu3

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top