数値フィールドを拡張する新しい金額フィールドを作成したいと考えています。私の目標は、この新しい金額フィールドに入力された数値を format でフォーマットすることです0,000,000.00
。これを達成するために、メソッド番号フィールドをオーバーライドsetValue
しparseValue
ました。これは期待どおりに機能していますが、コンソールに JavaScript エラーが表示されます。Firefox と chrome をチェックインしましたが、どちらも異なるエラーが発生するようです。関数の行me.callParent(v)
でエラーがスローされたようです。setValue
コードの JSFiddle リンクはhttp://jsfiddle.net/sgondhale/g88gR/です。
以下はコードでもあります
Ext.define('my.view.form.AmountField', {
extend: 'Ext.form.NumberField',
alias: 'widget.my-amountfield',
spinDownEnabled: false,
spinUpEnabled: false,
hideTrigger: true,
baseChars: '0123456789.',
decimalPrecision: 2,
minValue: 0.1,
maxValue: 9999999.99,
emptyText: '0.00',
maxLength: 12,
enforceMaxLength: true,
parseValue: function (value) {
value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));
return isNaN(value) ? '' : value;
},
setValue: function (v) {
var me = this;
console.log(v);
v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");
v = isNaN(v) ? '' : Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000.00");
me.setRawValue(v);
return me.callParent(v);
}
});
Ext.create('Ext.form.Panel', {
renderTo: Ext.getBody(),
width: 300,
bodyPadding: 10,
items: [{
xtype: 'my-amountfield',
fieldLabel: 'Amount'
}]
});
Chrome からのエラーの詳細は
キャッチされていない TypeError: Function.prototype.apply: 引数リストの型が間違っています ext-all.js:21
b.implement.callParent ext-all.js:21
Ext.define.setValue fiddle.jshell.net/_display/:53
Ext.define.beforeBlur ext-all.js:21