2013-03-22 119 views
0

说明输入栏显示为NaN

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

http://jsfiddle.net/uFQdq/4/ – Stranger 2013-03-22 17:02:31

+0

@mcpDESIGNS,感谢您的更新 – Stranger 2013-03-22 17:15:00

回答

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> 

更改值以文本值。

+0

我没有看到这个答案。那么,你得到了信用。 – Stranger 2013-03-22 17:38:43

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/

+0

现货上,您正在添加字符串,因此NaN。我想你想要那些“值”为'class =“primaryClass”'等 – 2013-03-22 17:09:59

+0

@mcpDESIGNS对,我想这就是他想要做的 – AlexCheuk 2013-03-22 17:10:41

+0

我不能在我的复选框中添加静态值。这些值将会改变。这就是我观察到的原因。那么,我是否错误地设置了observable? – Stranger 2013-03-22 17:11:52