ExtJS中的NumberField提示符

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上显示数字字段而不是文本字段.

pll*_*lee 5

看起来如果没有"黑客",他就无法完成.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)