2009-10-23 55 views
2

我試圖從服務器傳遞的單個JavaScript對象上飛行建立模態窗口。 但我不知道如何在沒有定義窗體變量的情況下序列化模態窗口中的窗體。 在大多數實施例中串行化過程是這樣的:如何序列化ExtJS中模態窗口中的窗體?

//create form 
var CustomForm = new Ext.FormPanel({...}); 
//submiting form 
CustomForm.getForm().submit({...}); 

在我的情況,如「形式」的所有內部部件從的xtype值創建的,並且沒有變量被分配給它。 有什麼辦法來選擇和使用這樣的序列化形式:

Ext.get(this).select('form').serialize(); 

或什麼的apropriate方式這樣做?

回答

4

您可以將表單分配一個id並使用Ext.getCmp(formid)。

要檢索FormPanel中的表單值使用myFormPanel.getForm().getValues()

這將回來與代表表單域的JS對象。

+0

感謝它現在正在工作,如何能夠使用按下的按鈕作爲參考選擇父窗體? – Nazariy 2009-10-23 23:05:17

+0

使用myButton.findParentByType('form') – kwcto 2009-10-26 12:43:02

1

我寫了一個函數從形式取值,併爲增加了查詢字符串的字符串:

/** 
* takes an array of form values and converts them into a 
* query string 
* 
* @param {object} Ext.form 
* @return {string} 
*/ 
this.serialize_form_values = function(form) 
{ 
    var serial = '', 
     values = form.getValues(); 

    for(var value in values) 
     serial += '&' + value + '=' + values[value]; 

    return serial.substr(1); 
}; 

也許它可能是有用的人?

+0

實際上,Ext.urlEncode()已經做到了:) – okyanet 2012-06-14 04:41:23