1

这是我的 jsfiddle:http: //jsfiddle.net/bigtek/3rW9S/17/

我的问题是:“txtSum”文本框包含其他两个文本框的总和。但是,用户可以在 txtSum 框中输入不同的数字。在这种情况下,我希望“txtSum”框以红色突出显示,以告诉用户数字不相加。

此外,分配按钮将使用它们各自的 allocatpct 计算两个文本框。发生这种情况时,我想用 txtSum 框中的任何数字进行计算,无论它是否同步。

<input type="text" data-bind="value:Sum" id="txtSum" />

(我这样做对吗?)

希望这是有道理的..谢谢你的帮助。

4

1 回答 1

1

当然可以,它在文档中示例 1:分解用户输入标题下进行了演示。

function MyViewModel() {
    this.firstName = ko.observable('Planet');
    this.lastName = ko.observable('Earth');

    this.fullName = ko.computed({
        read: function () {
            return this.firstName() + " " + this.lastName();
        },
        write: function (value) {
            var lastSpacePos = value.lastIndexOf(" ");
            if (lastSpacePos > 0) { // Ignore values with no space character
                this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
                this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
            }
        },
        owner: this
    });
}

ko.applyBindings(new MyViewModel());

在这个例子中,write 回调通过将传入的文本拆分为“firstName”和“lastName”组件来处理传入的值,并将这些值写回底层的 observables。

html:

<p>First name: <span data-bind="text: firstName"></span></p>
<p>Last name: <span data-bind="text: lastName"></span></p>
<h2>Hello, <input data-bind="value: fullName"/>!</h2>

编辑:

快速分解

  • 阅读:您实现的代码以返回将在计算的 observable 中显示的内容
  • write:写回底层可观察对象的内容。
于 2012-11-20T23:04:15.513 回答