Set Formulareingabewert auf „“ nicht klar Räume
-
29-09-2019 - |
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>
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