2016-07-30 29 views
1

Ich arbeite mit einem Textfeld und möchte die Änderung protokolliert haben. Ich bemerkte, nur verfolgt, wenn Sie einreichen, so dass ich Keyup verwendet, aber das fühlt sich irgendwie hacky, weil wenn jemand kopieren und Einfügen mit der Maus in das Textfeld würde es nicht erkennen. Gibt es eine strengere Möglichkeit, Änderungen in einem Textfeld zu beobachten?Den Wert eines Textfelds erhalten

var textField = document.getElementById('message-input'); 
Rx.Observable.fromEvent(textField, 'keyup') 
    .subscribe(_ => console.log(textField.value)); 

Antwort

3

Das ist wirklich kein Problem für Rx ist es eher eine allgemeine DOM-Frage. Aus RX-Perspektive können jedoch alle Ereignisse, die Sie am Ende verwenden, einfach alle Ereignisse zusammenführen, an denen Sie interessiert sind, und distinctUntilChanged() verwenden, um sicherzustellen, dass Sie nicht mit doppelten Ereignissen enden.

var keyup = Rx.Observable.fromEvent(textField, 'keyup', e => e.target.value); 
var focus = Rx.Observable.fromEvent(textField, 'focus', e => e.target.value); 


Rx.Observable.merge(keyup, focus) 
    .distinctUntilChanged() 
    .subscribe(x => console.log(x)); 
+0

großer Punkt, ich versuche nur, ein besseres Verständnis von Implementierungen von RxJS für DOM-Überwachung zu bekommen. – Rob

Verwandte Themen