2013-08-14 13 views

risposta

7

La soluzione più semplice è creare una finestra. Come Evan ha detto nel commento, la MessageBox è solo un Ext.window.Window larghezza un piccolo extra ..

un lavoro fiddle

Ecco un esempio di definizione:

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(); 
      } 
     } 
    ] 
}); 

allora si può solo creare e mostrare il finestra:

Ext.create('MyApp.view.Login').show(); 
+0

+1, il messagebox è solo un 'Ext .window.Window' con alcuni oggetti personalizzati. –

+0

Questa è la via preferibile. –

+0

Ottima risposta. Per chiudere la finestra quando si fa clic sul pulsante, utilizzare 'this.up ('window'). Close();' nel gestore di pulsanti. –

4

la proprietà msg del Ext.MessageBox renderà in formato HTML, quindi si può dire per mostrare due ingressi HTML e poi u SE i valori da queste usando qualcosa come

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; 
    } 
}); 

Anche se, a seconda di ciò che si sta cercando di fare, utilizzando una finestra come suggerito potrebbe essere una soluzione migliore

+0

ottenere gli elementi da id come quello non è veramente flessibile .. Come si può avere solo 1 finestra di messaggio come questo sulla tua pagina. Gli ID dovrebbero essere unici su una pagina. – VDP

+0

@ dkwarr87: Grazie per la soluzione. È stata una soluzione rapida e mi ha aiutato a ottenere due caselle di testo –

+0

@ VDP: Apprezzo la tua risposta anche se non l'ho implementata :) –

Problemi correlati