ExtJS:如何获取十进制数值

时间:2011-03-20 01:07:29

标签: extjs format

我使用了numberfield的decimalSeparator属性并将其设置为','(逗号)。现在我有读数值的问题,并用它做数学。

我首先尝试过简单:

var v = form.getForm().getValues().myfield / 2

一旦输入逗号,v就变为NaN。

然后我尝试了:

var v = Ext.util.Format.number(form.getForm().getValues().myfield, "0.000,00") / 2

一旦我输入逗号,v就会变为0。

我也尝试在格式字符串中使用/ i组合,但id也没有帮助。

我错过了什么?

2 个答案:

答案 0 :(得分:3)

问题是getValues无法正常工作。来自the documentation of getValues(强调我的):

  

注意:值是从表单中所有已启用的HTML输入元素收集的,而不是从Ext Field对象收集的。这意味着所有返回的值都是字符串(或字符串数​​组),并且该值可能是字段的emptyText。

如果要确保您具有小数值,则必须执行以下操作:

var v_string = form.getForm().getValues().myfield; //get the string
v_string = v_string.replace(",", "."); //replace ',' with '.'
var v = (+v_string) / 2; //convert the value to a decimal and divide by 2

修改

您也可以尝试使用getFieldValues(即form.getForm().getFieldValues())方法代替getValues方法。这应该就像你在每个表单字段上调用getValues一样。

答案 1 :(得分:2)

这应该有用。

var value = parseFloat("5000,5".replace(",", "."));