如何在ExtJS中序列化模态窗口内的表单?

时间:2009-10-23 22:35:57

标签: extjs

我正在尝试从服务器传递的单个javascript对象动态构建模态窗口。 但我不知道如何在不定义表单变量的情况下在模态窗口中序列化表单。 在大多数示例中,序列化过程如下所示:

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

在我的例子中,所有内部组件(如“form”)都是根据xtype值创建的,并且没有为其分配变量。 有没有办法选择和序列化表单使用这样的东西:

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

或者这样做的适当方式是什么?

2 个答案:

答案 0 :(得分:4)

您可以为表单指定一个id并使用Ext.getCmp(formid)。

要检索FormPanel的表单值,请使用myFormPanel.getForm().getValues()

这将返回一个表示表单字段的js对象。

答案 1 :(得分: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);
};

也许这对某人有用吗?