je suis en train de mettre le texte dans une zone de texte que l'utilisateur tape dans l'il (jsfiddle aire de jeux):
<html>
<body>
<input id="edValue" type="text" onKeyPress="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>
</body>
<script>
function edValueKeyPress()
{
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: "+s;
//var s = $("#edValue").val();
//$("#lblValue").text(s);
}
</script>
</html>
Le code s'exécute sans erreur, sauf que la valeur de l' input text
zone de, cours de onKeyPress
est toujours la valeur avant de la changer:
Question: Comment puis-je obtenir le texte d'une zone de texte lors de
onKeyPress
?
Bonus Chatter
Il y a trois événements liés à "l'utilisateur tape" dans le DOM HTML:
onKeyDown
onKeyPress
onKeyUp
Dans Windows, la commande de l' WM_Key
des messages devient important lorsque l'utilisateur appuie sur une touche et la touche commence à se répéter:
-
WM_KEYDOWN('a')
- l'utilisateur a poussé vers le bas de l' Une clé -
WM_CHAR('a')
- una
caractère a été reçu par l'utilisateur -
WM_CHAR('a')
- una
caractère a été reçu par l'utilisateur -
WM_CHAR('a')
- una
caractère a été reçu par l'utilisateur -
WM_CHAR('a')
- una
caractère a été reçu par l'utilisateur -
WM_CHAR('a')
- una
caractère a été reçu par l'utilisateur -
WM_KEYUP('a')
- l'utilisateur a publié l' Une clé
Sera résultat en cinq caractères qui apparaissent dans un texte de contrôle: aaaaa
Le point important étant que vous répondez à l' WM_CHAR
message, celui qui se répète. Sinon, vous manquez des événements lorsqu'une touche est enfoncée.
En HTML, les choses sont légèrement différentes:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html offre une KeyDown
et KeyPress
chaque répétition des touches. Et l' KeyUp
événement n'est généré lorsque l'utilisateur relâche la touche.
La vente à emporter
- je peux répondre à
onKeyDown
ouonKeyPress
, mais les deux sont toujours levé avant l'input.value
a été mis à jour - je ne peux pas répondre à
onKeyUp
, car il n'est pas le texte dans la zone de texte change.
Question: Comment puis-je obtenir le texte d'une zone de texte lors de onKeyPress
?