11

ノックアウト jsオブザーバブルにバインドされた入力テキスト ボックスがあります。

<input id="searchTextBox" class="searchTextBox" type="text" maxlength="25"
       title="Search" placeholder="Search"
       data-bind="value: GridVm.FilterText,
       valueUpdate: 'afterkeydown',
       disable: GridVm.Data().length == 0" />

問題は、ユーザーが IE で x をクリックしたときに、FilterText オブザーバブルが更新されないことです。

xを削除できることがわかりました(リンクされた質問のスクリーンショットを参照)が、それは最後の手段です(機能が気に入っています)。このフォーラムは、x がクリックされたときに発生するイベントはないと述べています

ノックアウトの監視可能な更新を強制するために使用できるイベント、またはノックアウトでこれを行う良い方法はありますか?

4

2 に答える 2

12

変えるだけなら

valueUpdate: 'afterkeydown'

valueUpdate: 'input'

そのイベントをフックして、値の更新をトリガーします。クリップボード ベースのアクションとテキストのドラッグ アンド ドロップ アクションも処理されるため、全体的に優れています。

于 2013-06-26T18:55:41.313 に答える
5

input イベントKnockout の event bindingを使用してそれを理解しました。これが私のJsFiddleで、以下のコードで解決策を示しています。

<input type="search" id="input1" data-bind="value: textForBox, valueUpdate: 'afterkeydown',
  event: { input: cleared }" />
var vm = {
    textForBox: ko.observable(),
    cleared: function (data, event) {
        if (event.currentTarget.value === '') {
           this.textForBox('');
        }
    }
};
ko.applyBindings(vm);
于 2013-05-07T15:20:18.693 に答える