mar*_*ins 2 extjs prompt messagebox
我正在尝试使用数字字段而不是常规文本字段显示MessageBox.prompt.我无法创建一个新的MessageBox,所以我决定只使用验证器,但我也遇到了一些问题.
所以任何东西都适用于我,可以是MessageBox的数字验证器,也可以是带有数字字段而不是文本字段的MessageBox.
这是我的MessageBox ...
var msgbox = Ext.Msg.prompt('Quantity', 'Enter a number',function(btn, text){} )
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
UPDATE
我设法使验证器工作,但我宁愿有一个数字字段而不是文本字段,所以问题的第一部分仍然是.
如何在ExtJS上的MessageBox.prompt上显示数字字段而不是文本字段.
看起来如果没有"黑客",他就无法完成.Ext.Msg是一个单例,在initComponent中设置了文本字段,它是不可配置的. http://docs.sencha.com/ext-js/4-1/source/MessageBox.html#Ext-window-MessageBox-method-initComponent
由于它是单例,因此覆盖不起作用,并且它不是解决问题的好方法.
Messagebox的扩展应该可以工作,但是因为MessageBox代码没有很多钩子,所以必须在每次Ext升级时查看代码.
Ext.define('NumberPrompt', {
extend: 'Ext.window.MessageBox',
initComponent: function() {
this.callParent();
var index = this.promptContainer.items.indexOf(this.textField);
this.promptContainer.remove(this.textField);
this.textField = this._createNumberField();
this.promptContainer.insert(index, this.textField);
},
_createNumberField: function() {
//copy paste what is being done in the initComonent to create the textfield
return new Ext.form.field.Number({
id: this.id + '-textfield',
anchor: '100%',
enableKeyEvents: true,
listeners: {
keydown: this.onPromptKey,
scope: this
}
});
}
});
var msgbox = new NumberPrompt().prompt('Quantity', 'Enter a number',function(btn, text){} )
Run Code Online (Sandbox Code Playgroud)