2009-10-23 6 views
2

J'essaie de construire des fenêtres modales à la volée à partir d'un seul objet javascript passé par le serveur. Mais je n'ai aucune idée comment je peux sérialiser le formulaire à l'intérieur de la fenêtre modale sans définir la variable de formulaire. Dans la plupart des exemples sérialiser look processus comme celui-ci:Comment sérialiser un formulaire dans une fenêtre modale dans ExtJS?

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

Dans mon cas, tous les composants internes comme « forme » sont créés à partir de la valeur xtype, et aucune variable lui est attribuée. Est-il possible de sélectionner et de sérialisation formulaire en utilisant quelque chose comme ceci:

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

ou ce qui est une façon apropriate de le faire?

Répondre

4

Vous pouvez attribuer un ID au formulaire et utiliser Ext.getCmp (formid).

Pour récupérer les valeurs sous forme d'un panneau FormPanel utilisent myFormPanel.getForm().getValues()

qui va revenir avec un objet js représentant les champs de formulaire.

+0

Merci, il fonctionne maintenant, comment est-il possible de sélectionner la forme parent en utilisant le bouton enfoncé comme référence? – Nazariy

+0

Utiliser myButton.findParentByType ('form') – kwcto

1

j'ai écrit une fonction pour prendre des valeurs d'une forme et générer une chaîne pour ajouter à la chaîne de requête:

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

Peut-être qu'il pourrait être utile pour quelqu'un?

+0

En fait, Ext.urlEncode() le fait déjà :) – okyanet

Questions connexes