6

如何修改 sencha 中的 Ext.Msg.show 以显示两个文本框。现在当我们设置 prompt:true 时它只支持一个文本框

Ext.Msg.show({
    title: 'Enter values',
    width: 500,
    buttons: Ext.Msg.OKCANCEL,
    multiline: true,
    prompt:true,
});
4

2 回答 2

7

最简单的解决方案就是创建一个窗口。就像埃文在评论中说的那样,MessageBox 只是一个Ext.window.Window额外的宽度..

一个工作小提琴

这是一个示例定义:

Ext.define('MyApp.view.Login', {
    extend: 'Ext.window.Window',
    height: 220,
    width: 490,
    layout: 'fit',
    modal: true,
    buttonAlign: 'left',
    closable: false,
    items: [
        {
            xtype: 'form',
            frame: false,
            border: 0,
            layout: {
                type: 'hbox',
                align: 'middle'
            },
            fieldDefaults: {
                msgTarget: 'side',
                labelWidth: 55
            },
            items: [
                {
                    xtype: 'container',
                    flex: 1,
                    padding: 10,
                    layout: {
                        type: 'vbox',
                        align: 'stretch'
                    },
                    items: [
                        {
                            xtype: 'textfield',
                            name: 'username',
                            fieldLabel: 'Username',
                            allowBlank: false,
                            flex: 1
                        },
                        {
                            xtype: 'textfield',
                            name: 'password',
                            fieldLabel: 'Password',
                            inputType: 'password',
                            allowBlank: false,
                            flex: 1
                        }
                    ]
                }
            ]
        }
    ],
    buttons: [
        {
            text: 'Login',
            handler: function () {
                Ext.Msg.alert('This is not yet implemented.').show();
            }
        }
    ]
});

然后你可以创建并显示窗口:

Ext.create('MyApp.view.Login').show();
于 2013-08-14T10:43:41.463 回答
4

Ext.MessageBox 的 msg 属性将呈现为 HTML,因此您可以告诉它显示两个 HTML 输入,然后使用来自这些输入的值使用类似

Ext.Msg.show(
{
    title: 'Enter values:',
    width: 500,
    buttons: Ext.Msg.OKCANCEL,
    msg: 'Value1: <input type="text" id="textInput1" /><br />Value 2: <input type="text" id="textInput2" />',
    fn: function (button)
    {
        var value1 = document.getElementById('textInput1').value;
        var value2 = document.getElementById('textInput2').value;
    }
});

虽然,根据您要执行的操作,按照建议使用窗口可能是更好的解决方案

于 2013-08-14T11:29:20.567 回答