5

複数のテキスト入力を同じオブザーバブル (同じアクション) にバインドしたい

<input id="test1" name="test1" type="text" data-bind="value: searchQuantity"/>
<input id="test2" name="test2" type="text" data-bind="value: searchQuantity"/>

var viewModel = {
        searchQuantity: ko.observable(),
    };


<p>You have typed: <span id="spantest1" data-bind="text: searchQuantity"></span></p>
<p>You have typed: <span id="spantest2" data-bind="text: searchQuantity"></span></p>

しかし、入力 test1 の値を変更すると、test2 の値が変更されます。

2 つの入力に対して同じアクションを実行したいのですが、対応するスパンの値を変更したいと考えています。(これは単なるサンプルなので、テキストボックスのあるグリッドでも同じことができます。テキストボックスを変更すると、変更されたテキストボックスを含む同じ列のすべてのテキストボックスの合計を再計算したいです。)


私の問題をうまく説明できなかったと思います。

スクリーンショットをご覧ください
ここに画像の説明を入力

私が本当に欲しいのは、赤いテキスト ボックスの値を変更すると、緑のセルが列の合計で更新されることです (合計は年ごとになります)。

ありがとう。

4

1 に答える 1

1


私が作成したこのデモを ご覧ください。
HTMLコード

<input id="test1" name="test1" type="text" data-bind="value: searchQuantity1, valueUpdate:'afterkeydown'"/>
<input id="test2" name="test2" type="text" data-bind="value: searchQuantity2, valueUpdate:'afterkeydown'"/>

<p>Test1 value is : <span id="spantest1" data-bind="text: searchQuantity1"></span></p>
<p>Test2 value is : <span id="spantest2" data-bind="text: searchQuantity2"></span></p>
<p>Sum: <span id="spantest3" data-bind="text: spans"></span></p>


Javascript コード

var viewModel = function(data) {
  var self = this;
  self.searchQuantity1 = ko.observable(1);
  self.searchQuantity2 = ko.observable(2);
  self.spans = ko.computed(function() {
      return Number(self.searchQuantity1 ())+Number(self.searchQuantity2 ());
  }, self);
};

ko.applyBindings(new viewModel());


それはあなたの質問に答えますか?
ありがとう。

于 2012-11-27T13:24:40.020 に答える