2013-08-21 50 views
4
form= new Ext.FormPanel({ 
    renderTo: Ext.query(".foo")[0], 
    items:[] 

}); 

創建形式在Firebug的HTML代碼:通過Ext.FormPanel

<div class="foo" id="ext-gen1008"> 
<div id="form-1014" class="x-panel x-panel-default" role="form" style="width: 1024px; height: 2px;"> 
<div id="form-1014-body" class="x-panel-body x-panel-body-default x-panel-body-default" style="left: 0px; top: 0px;"> 
<div class="x-clear" role="presentation" id="ext-gen1011"></div> 
</div> 
</div> 
</div> 

哪裏表單標籤?或者沒有表單標籤,並且此表單是由Ajax提交的?

+0

你使用了什麼extjs版本(2.x,3.x,4.x)?你的目標是什麼? – VDP

+0

我使用版本Extjs 4 –

回答

4

你不應該關心html。 ExtJS是一個JavaScript框架,爲您處理這些事情。 (你不應該寫標籤相關的代碼?在將來的版本中,sencha可以修改它,如果你這樣做,你將不得不重寫/更新你的代碼。)

如果你提供帶有url參數的表單,你可以調用.submit()在您的表單上提交值。

這裏你可以找到在the documentation

一個實例文檔的例子:

Ext.create('Ext.form.Panel', { 
    title: 'Simple Form', 
    bodyPadding: 5, 
    width: 350, 

    // The form will submit an AJAX request to this URL when submitted 
    url: 'save-form.php', 

    // Fields will be arranged vertically, stretched to full width 
    layout: 'anchor', 
    defaults: { 
     anchor: '100%' 
    }, 

    // The fields 
    defaultType: 'textfield', 
    items: [{ 
     fieldLabel: 'First Name', 
     name: 'first', 
     allowBlank: false 
    },{ 
     fieldLabel: 'Last Name', 
     name: 'last', 
     allowBlank: false 
    }], 

    // Reset and Submit buttons 
    buttons: [{ 
     text: 'Reset', 
     handler: function() { 
      this.up('form').getForm().reset(); 
     } 
    }, { 
     text: 'Submit', 
     formBind: true, //only enabled once the form is valid 
     disabled: true, 
     handler: function() { 
      var form = this.up('form').getForm(); 
      if (form.isValid()) { 
       form.submit({ 
        success: function(form, action) { 
         Ext.Msg.alert('Success', action.result.msg); 
        }, 
        failure: function(form, action) { 
         Ext.Msg.alert('Failed', action.result.msg); 
        } 
       }); 
      } 
     } 
    }], 
    renderTo: Ext.getBody() 
}); 

無關,但樂於助人,前分機4.x中,我們使用new關鍵字來創建新的組件,現在它建議使用Ext.create。而不是Ext.extend,我們現在使用Ext.define並添加一個擴展參數。

Upgrade Guide

+0

感謝您的幫助 –

+1

@VDP一個小小的更正:Ext.create有其有用的一面,但不建議使用它,而不是'new',因爲它增加了對象創建的明顯開銷。當你不想對類名進行硬編碼時,它很方便,但在大多數情況下,普通的舊''new'綽綽有餘。 –

+0

@AlexTokarev我沒有想過這件事。好點子!它有開銷。我在那裏誤解了文檔。但衡量開銷與可維護性,大多數時候我仍然更喜歡'Ext.create' /'Ext.widget' – VDP