输入字段显示NaN

时间:2013-03-22 17:02:15

标签: javascript knockout.js

说明

嗨,我正在使用淘汰赛。我有三个复选框和一个输入字段。当我单击复选框时,复选框的值应出现在输入字段中。但是,我没有看到复选框的值,而是看到了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());

2 个答案:

答案 0 :(得分:2)

查看代码,在这一行,

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/

答案 1 :(得分:1)

检查出来:

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

这样做是为了让它们变得动态:

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

将值更改为文本中的值。