ExtJS:如何获取十进制数值

发布于 2024-10-25 10:26:10 字数 400 浏览 4 评论 0原文

我使用了 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也没有帮助。

我缺少什么?

I used decimalSeparator property of numberfield and set it to ',' (comma). Now I have problem reading value as number and doing math with it.

I first tried simple:

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

As soon s I type comma, v becomes NaN.

Then I tried:

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

As soon a I type comma, v becomes 0.

I also tried combinations with /i in format string but id didn't help either.

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缱倦旧时光 2024-11-01 10:26:10

问题是 getValues 无法按您的预期工作。来自 getValues 的文档(强调我的):

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

如果您想确保有一个十进制值,则必须执行以下操作:

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 一样。

The problem is that getValues does not work as you expect. From the documentation of getValues (emphasis mine):

Note: The values are collected from all enabled HTML input elements within the form, not from the Ext Field objects. This means that all returned values are Strings (or Arrays of Strings) and that the value can potentially be the emptyText of a field.

If you want to ensure that you have a decimal value, you will have to do something like the following:

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

EDIT

You could also try using the getFieldValues (i.e. form.getForm().getFieldValues()) method instead of the getValues method. This should act as though you had called getValues on every form field.

葬心 2024-11-01 10:26:10

这应该有效。

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

This should work.

var value = parseFloat("5000,5".replace(",", "."));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文