【问题标题】:input field displaying NaN显示 NaN 的输入字段
【发布时间】:2025-11-29 15:55:02
【问题描述】:

说明

您好,我正在使用淘汰赛。我有三个复选框和一个输入字段。当我单击复选框时,复选框的值应出现在输入字段中。但是,我没有看到复选框的值,而是看到了 NaN。

jsFiddle link

function ViewModel() {
    var self = this;  
    self.primaryClass = ko.observable("50"); 
    self.secondaryClass = ko.observable("40"); 
    self.otherClass = ko.observable("10"); 

    self.selectedValues = ko.observableArray([]);

    self.sum = ko.computed(function () {
        var total = 0;
        ko.utils.arrayForEach(self.selectedValues(), function (item) {
            total += parseInt(item);
        });
        return total;
    });

}

ko.applyBindings(new ViewModel());

【问题讨论】:

标签: javascript knockout.js


【解决方案1】:

查看代码,在这一行,

total += parseInt(item);

变量项是您的复选框的值。

<input data-bind="checked: selectedValues" type="checkbox" value="primaryClass">500</input>
<input data-bind="checked: selectedValues" type="checkbox" value="secondaryClass">200</input>
<input data-bind="checked: selectedValues" type="checkbox" value="otherClass">100</input>

表示您正在尝试parseInt("primaryClass") ...等等。

尝试将复选框的值更改为数字。

喜欢这里:http://jsfiddle.net/2L4W9/

【讨论】:

  • 正确,您将字符串添加在一起,因此是 NaN。我认为您希望这些“价值观”成为class="primaryClass"
  • 我无法在复选框中添加静态值。这些值会改变。这就是为什么我有可观察的。那么,我是否错误地设置了 observable?
  • 这可能是另一个问题。 @陌生人。对不起,我对knockoutjs不太熟悉
  • 这实际上是我从一开始就要求的。如果我开始另一个问题,我们就会有冗余。如果你不熟悉也没关系。顺便说一句,这里也一样。感谢您的帮助
【解决方案2】:

看看这个:

http://jsfiddle.net/Dtwigs/uFQdq/5/

这样输入可以使它们动态化:

<label>
<input data-bind="checked: selectedValues, value: primaryClass" type="checkbox"></input>
<span data-bind="text: primaryClass"></span>
</label>

将您的值更改为文本中的值。

【讨论】:

    最近更新 更多