2010-07-15 4 views
0

Pourquoi l'événement onchange de ma zone de texte se déclenche sur le flou, mais ne se déclenche pas par chaque caractère tapé?Pourquoi l'événement onchange de ma zone de texte déclenche le flou - ne se déclenche-t-il pas par chaque caractère tapé?

Je veux obtenir le texte entier entré dans la zone de texte par chaque type par le clavier!

Mais onchang L'événement est uniquement déclenché sur le flou! Outre les événements onkeyup - onkeypress - onkeydown, les événements ne sont d'aucune aide car ces événements se déclenchent d'abord, puis le dernier caractère entré est appliqué à la zone de texte.

Quel événement dois-je utiliser ou comment puis-je faire cela?

+0

Je suis vraiment perdu après avoir lu votre question! Si ce n'est pas des événements clés, comment cela va-t-il changer? – TheVillageIdiot

+0

salut cher ami/tester!/quand vous utilisez onkeyup par exemple et tapez un caractère (comme 'a') dans la zone de texte, d'abord onkeyup déclenché et quand vous utilisez textbox.value dans la fonction onkeyup, il montre une chaîne vide ... après onkeyup fin de l'événement, le caractère 'a' apparaît sur la zone de texte/mais je le veux sur la fonction onkeyup! une idée? – MoonLight

Répondre

3

vous voulez keyup, keydown, ou une combinaison d'entre eux. Au cours du gestionnaire de raccourci, vous pouvez obtenir la valeur avant-événement de la zone de texte. Au cours du gestionnaire de clés, vous pouvez obtenir la valeur après l'événement. Si vous obtenez une chaîne vide, vous faites quelque chose de mal.

edit: voici un exemple démontrant comment fonctionnent ces 2 événements. taper dans la première case met à jour les deux autres.

<table> 
    <tr> 
     <td>input</td> 
     <td><input type="text" id="textin" /></td> 
    </tr> 
    <tr> 
     <td>keydown</td> 
     <td><input type="text" id="keydownout" /></td> 
    </tr> 
    <tr> 
     <td>keyup</td> 
     <td><input type="text" id="keyupout" /></td> 
    </tr> 
</table> 
<script> 

    var readbox = document.getElementById('textin'); 
    var keydownbox = document.getElementById('keydownout'); 
    var keyupbox = document.getElementById('keyupout'); 

    function keydownhandler(e) { 
     keydownbox.value = readbox.value; 
    } 

    function keyuphandler(e) { 
     keyupbox.value = readbox.value; 
    } 

    readbox.addEventListener('keydown', keydownhandler, false); 
    readbox.addEventListener('keyup', keyuphandler, false); 

</script> 

(fonctionne dans firefox/chrome)

+0

vraiment vraiment merci pour vos réponses .... mais il est encore perdu un caractère (dernier entré) certains corps m'ont dit d'utiliser setTimer dans l'événement keyup pour obtenir la valeur de la zone de texte! je ne fais pas est le meilleur ou pas/aucune idée? – MoonLight

+0

J'ai mis à jour mon message avec un exemple. Si vous attendez un comportement différent de celui de l'exemple, dites-nous ce que cela pourrait être. – lincolnk

0

L'événement se déclenche de onkeyup après que vous avez saisi du texte:

onkeyup='alert(document.getElementById("myTextBox").value);' 
+0

je le fais/mais il me donne le document.getElementById ("myTextBox"). Longueur-1 caractère/je n'ai pas entré le dernier caractère entré – MoonLight