2011-03-20 59 views
2

我使用numberfield的decimalSeparator屬性並將其設置爲','(逗號)。現在我把閱讀價值問題看成是數字,並用數學來計算。ExtJS:如何獲取十進制數值

我第一次嘗試簡單:

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

一旦就是我鍵入逗號,V變成NaN。

然後我嘗試:

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

一旦一個I型逗號,V格式的字符串變爲0

我也試過用組合/我,但ID沒有幫助。

我錯過了什麼?

回答

2

這應該工作。

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

羅比,感謝這非常好,但仍然不夠我的口味「一般」。我希望找到「設置並忘記它」的解決方案,如用戶/會話/其他變量的配置選項。我想這是JavaScript的問題,它不能接受點以外的小數點分隔符。 – Milan 2011-03-20 16:49:35

+0

不理想,但實現:) – Milan 2011-10-04 08:30:21

3

問題是getValues不能按照您的預期工作。從the documentation of 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一樣。

+0

謝謝你的回覆。這種解決方法效果很好,但是還有更多的「全局」解決方案嗎?我有許多十進制數字的網絡應用程序,並且爲每個字段寫這種數據檢索將是乏味的。 – Milan 2011-03-20 08:06:57

+0

我沒有得到getFieldValues,也沒有得到應用它的地方和原因。 – Milan 2011-03-20 21:58:04

+0

對不起,它是表單的一個屬性。我的答案讓我更清楚一點。 – NT3RP 2011-03-20 23:10:55

相關問題