2013-08-14 5 views
6

Wie kann ich die Ext.Msg.show in sencha ändern nun zeigen zwei Text boxes.Right es unterstützt nur eine Textbox, wenn wir setzen prompt: trueWie kann ich sind zwei Textfelder in Ext.Msg.show

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

Antwort

7

Die einfachste Lösung ist nur ein Fenster zu erstellen. Wie Evan im Kommentar sagte, ist die MessageBox nur ein Ext.window.Window ein wenig mehr Breite ..

a Hier ist ein Beispiel Definition fiddle

arbeiten:

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

Dann können Sie einfach erstellen und zeigen die Fenster:

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

+1, ist die messagebox nur ein 'Ext .window.Window' mit einigen benutzerdefinierten Elementen. –

+0

Dies ist der bevorzugte Weg zu gehen. –

+0

Große Antwort. Um das Fenster beim Klicken auf die Schaltfläche zu schließen, verwenden Sie 'this.up ('window'). Close();' im Button-Handler. –

4

die msg Eigenschaft des Ext.MessageBox als HTML machen wird, so dass Sie es zwei HTML-Eingänge und u zeigen kann sagen, dann die Werte von diesen mit so etwas wie

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

se Obwohl, je nachdem, was Sie versuchen, ein Fenster zu tun, wobei als vorgeschlagen werden, um eine bessere Lösung

+0

das Holen der Elemente durch Identifikation wie das ist nicht wirklich flexibel. Als Sie können nur 1 Meldungsfeld so auf Ihrer Seite haben. IDs sollten auf einer Seite eindeutig sein. – VDP

+0

@ dkwarr87: Danke für die Lösung. Es war eine schnelle Lösung und half mir, zwei Textfelder zu bekommen –

+0

@ VDP: Schätze deine Antwort auch, obwohl ich es nicht implementiert habe :) –

Verwandte Themen