我创建了一个JS Fiddle来显示这个问题:https://jsfiddle.net/evanlarsen/e8bj9upf/7/
在文本框中输入时,它会在文本框下方显示你输入的内容。这在谷歌Chrome浏览器中运行良好,但在使用Firefox时,你输入的任何内容的最后一个字母都会被删除。
HTML语言
<div id="app">
<input type="text" data-bind="value: value, valueUpdate: 'afterkeydown'" />
<div data-bind="text: value"></div>
</div>
Javascript语言
const App = function(){
this.value = ko.observable('');
this.value.extend({ rateLimit: { timeout: 800, method: 'notifyWhenChangesStop' } });
}
const app = new App();
ko.applyBindings(app, document.getElementById('app'));
我怎样才能让firefox停止掉最后一个字母呢?我想在每次按键后更新可观察性,但也要限制更新,这样它就不会在每次按键时更新,而是在800毫秒后不再按键。
2条答案
按热度按时间anauzrmj1#
在Firefox 98.0中无法重现这个问题,但你最好还是使用
textInput
绑定。实际上,文档中推荐使用textInput
绑定。因此:
第一个
https://jsfiddle.net/thebluenile/xydwpvez/
nbewdwxp2#
尝试使用“afterkeyup”,这是否符合您的要求?
这篇文章有一个JSFiddle,它可以帮助你实现你想做的延迟,也利用rateLimit,在800毫秒;
Knockout.js delay valueUpdate: afterkeydown