我正在使用文本字段,我希望记录更改。我注意到change
只跟踪你提交的时间,所以我使用的是keyup,但这有点像hacky,因为如果有人使用鼠标复制并粘贴到文本字段中,它就无法检测到它。是否有更严格的方法来观察文本字段中的更改?
var textField = document.getElementById('message-input');
Rx.Observable.fromEvent(textField, 'keyup')
.subscribe(_ => console.log(textField.value));
答案 0 :(得分: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));