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>
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top