在使用numberfield 控件時,若是沒有對格式進行限制,例如最小值 minValue:0
輸入小數點後 控件會默認處理爲 保留兩位小數。
其中 主要配置項是 decimals 默認值爲2
一般來說沒啥問題,但是在使用失焦即保存寫入 就會出現問題
例如:
控件上輸入 0.336666
若是用失焦事件 獲取到的值是0.336666,而失焦事件後 可以看到 控件裏的值變爲了0.34
原因:
applyValue的方法 優先於 applyInputValue
造成了在失焦事件blur 取值時 applyValue獲取到的是真實值,而 applyInputValue 裏 會進行數位格式化如下
其中 numberFormat變量來源於 控件 的decimals
解決方法:
在你的保存方法裏,可以先檢查下格式
Ext.util.Format.number(value, '0.'+ Ext.String.repeat('0', field.getDecimals()));