Définir la valeur d'entrée sous forme de « » ne pas les espaces clairs
-
29-09-2019 - |
Question
Je suis en train de mettre en œuvre un émulateur de ligne de commande en JavaScript. Je veux la clé Spacebar
d'agir comme Enter
(présenter, puis désactivez la ligne de commande).
Dans ce post, nous allons représenter un space
comme un trait de soulignement, de sorte que les moyens de _
[space]
:
Si j'entre banana_
puis, après avoir attrapé la pression de touche, je l'appelle input.value= ""
, il efface banana
, mais pas le reste space
.
Je testé à la fois onkeydown
et onkeypress
, mais il ne semble pas faire de différence. En fait, onkeyup
fait l'affaire, voir ma réponse ci-dessous!
Ceci est mon code. quelqu'un pourrait-il me aider à supprimer l'espace supplémentaire ...
<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>
La solution
Utilisez onkeyup
à la place.
document.onkeyup = keyCheck;
De cette façon, l'événement se produit après le caractère a été ajouté à la valeur de l'élément.
Essayez-: http://jsbin.com/esacu3