如何使用knockout.js绑定文本类型的用户输入的默认值,并在用户输入值

时间:2016-04-11 19:17:19

标签: html knockout.js

我有一个带有用户输入字段的表单,它取数值。我希望它的值设置为另一个observable的值,如果它在最初渲染时的值为零。

<p>Planned Qunatity: <span id="plQuantity" data-bind="text: plannedQuantity"  /></p>
<p>Issued Quantity: <input id="isQuantity" data-bind="value: issuedQuantity"  /></p>

此处我希望将已发布数量设置为计划数量,并且如果呈现数量在呈现时为零,则也会在UI上显示其值。

但是,如果用户在“已发货数量”字段中输入值,则应覆盖最初设置为“计划数量”的默认值,因为“发货数量”为零。

我创造了一个小提琴。 http://jsfiddle.net/v0qnp7v2/2/

1 个答案:

答案 0 :(得分:1)

您可以使用&#34;订阅&#34;跟踪更改为您的可观察量。这是你的小提琴修改:

self.issuedQuantity.subscribe(function(newValue){
        if (newValue == 0) {
            self.issuedQuantity(self.plannedQuantity());
    }
});

http://jsfiddle.net/xr5yLLpa/5/

当您将issuedQuantity的值设置为0时,将在订阅中截获更改并将其设置为plannedQuantity的值。请注意,退出文本框后会发生更改 - 焦点不再出现在文本框中。