2016-07-30 11 views
1

私はテキストフィールドを使っているので、変更を記録したいと思います。私はchangeがあなたが提出したときだけ追跡していることに気づいたので、私はkeyupを使っていましたが、誰かがテキストフィールドにマウスを使ってそれを検出しないとコピーして貼り付けるので、テキストフィールドの変更をより厳密に観察する方法はありますか?テキストフィールドの値を取得する

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

答えて

3

これは本当にRxの問題ではありませんが、これは一般的なDOMの質問です。しかし、Rxの観点から見ると、あなたが使っているイベントは、関心のあるすべてのイベントをマージするだけで、distinctUntilChanged()を使って重複イベントにならないようにすることができます。

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

私はDOM監視のためのRxJSの実装をよりよく理解しようとしています。 – Rob

関連する問題