2
我已經擴展Ext.form.Numberfield顯示千位分隔符,始終顯示兩個小數位:如何在表單提交時控制Ext.form.NumberField值的格式?
Ext.override(Ext.form.NumberField, {
baseChars: ",",
setValue: function(v){
v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");
//v = isNaN(v) ? '' : String(v).replace(".", this.decimalSeparator);
v = isNaN(v) ? '' : Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000.00");
this.setRawValue(v);
return Ext.form.NumberField.superclass.setValue.call(this, v);
},
fixPrecision: function(value){
var nan = isNaN(value);
if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {
return nan ? '' : value;
}
return parseFloat(value).toFixed(this.decimalPrecision);
},
validateValue: function(value){
if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {
return false;
}
if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
return true;
}
value = String(value).replace(this.decimalSeparator, ".").replace(/,/g, "");
if (isNaN(value)) {
this.markInvalid(String.format(this.nanText, value));
return false;
}
var num = this.parseValue(value);
if (num < this.minValue) {
this.markInvalid(String.format(this.minText, this.minValue));
return false;
}
if (num > this.maxValue) {
this.markInvalid(String.format(this.maxText, this.maxValue));
return false;
}
return true;
},
parseValue: function(value){
value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));
return isNaN(value) ? '' : value;
}
});
的問題是,在表單提交,在POST發送的值包含逗號,迫使我解析爲服務器端的字符串。有沒有辦法發送原始數值而不是這個特殊的逗號格式的值?
而是發送這些參數:
referenceSales 10,000,000.00
salesGoal 11,000,000.00
我想給這些:
referenceSales 10000000.00
salesGoal 11000000.00
任何想法如何掛鉤到表單的提交操作? – 2010-01-13 21:07:28
BasicForm有一個submit()方法。你可以寫一個點擊處理程序(用於你的「GO」按鈕);它會重新格式化NumberFields中的數據,然後在表單對象上調用submit()。或者更好的是,處理程序可以從NumberFields獲取數據,清理它,然後將數據移動到隱藏字段中,然後使用表單提交數據。服務器將忽略髒字段並僅使用已清理字段中的數據。 – Upperstage 2010-01-13 22:17:57