2009-10-23 58 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