获取文本字段的值

时间:2016-07-30 18:46:07

标签: javascript rxjs

我正在使用文本字段,我希望记录更改。我注意到change只跟踪你提交的时间,所以我使用的是keyup,但这有点像hacky,因为如果有人使用鼠标复制并粘贴到文本字段中,它就无法检测到它。是否有更严格的方法来观察文本字段中的更改?

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

1 个答案:

答案 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));