7

Ich fragte mich, ob es möglich wäre, das Endergebnis in der keypress Ereignis zu bekommen? Derzeit bin ich mit dem keyup, weil es aktiviert ist nach der Benutzer Textbearbeitung in einem texteara getan hat, aber ich habe eine Methode geschrieben, die etwas ähnliches mit der Mootools Bibliothek tut:JavaScript Tastendruckereignis erhalten Endwert von Textarea

input.addEvent("keypress", function (input) { 
    var previous_result = this.value; 
    var end_result = this.value + input.key; 
}); 

jedoch diese Methode ist schrecklich, wenn sie mit speziellen Tasten wie Backspace handelt, oder wenn der Benutzer CTRL + a & & Rück in welchem ​​Fall der Wert des Eingangselementes verwenden wählt würde „ein leerer String“ nicht sein.

Ich bin neugierig, weil ich beobachtete Google Suchmaschine XMLHttpRequest senden UND mutieren die Seite vor der keyup Ereignis ausgelöst. Darüber hinaus schafft die Eingabe, die sie verwenden, um mein Problem des Entfernens des gesamten Textes zu überwinden, während immer noch den Luxus von keypress genießen.

Danke!

+0

Verwenden Sie "Keydown"? –

+0

@ExplosionPills: Versucht es, der Wert bleibt hinter dem tatsächlichen Ergebnis in "Keydown": < – User2121315

Antwort

9

Dies wird es funktioniert:

input.addEvent("keypress", function (input) {  
    setTimeout(function() { 
     input.value // returns the updated value 
    }, 0);  
}); 

Live-Demo:http://jsfiddle.net/yQQ5P/ (ich benutze integrierten API, wie ich weiß Mootools nicht)

So verwenden Sie eine null- Timeout, das als Ertrag fungiert. Dies gibt dem UI-Thread des Browsers die Möglichkeit, den Wert der Eingabe zu aktualisieren.

+0

Whoah, hüllte gerade den Code mit diesem und es funktioniert wie ein Charme, hvala puno! – User2121315

Verwandte Themen