knockout.js 使用rateLimit和valueUpdateafterkeydown在Firefox中删除最后一个键入的字母时删除值绑定

dzhpxtsq  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(94)

我创建了一个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毫秒后不再按键。

anauzrmj

anauzrmj1#

在Firefox 98.0中无法重现这个问题,但你最好还是使用textInput绑定。实际上,文档中推荐使用textInput绑定。
因此:
第一个
https://jsfiddle.net/thebluenile/xydwpvez/

nbewdwxp

nbewdwxp2#

尝试使用“afterkeyup”,这是否符合您的要求?
这篇文章有一个JSFiddle,它可以帮助你实现你想做的延迟,也利用rateLimit,在800毫秒;
Knockout.js delay valueUpdate: afterkeydown

相关问题