Salut,
Toujours sur la même application (pour ceux qui suivent), cela avance mais j'ai maintenant un souci avec la fonction replace de Prototype.
En effet je désire recréer un élément de mon dom après retour d'une requête vers une page php.
Cet élément est composé de input et représente un formulaire de mise à jours. Ces inputs sont donc remplis suivant les infos d'une table et lorsque je valide la mise à jours je voudrais envoyer ma requête et récupérer les nouvelles données pour recharger les champs du formulaire.
Le but de la manœuvre est plus complexe mais en gros c'est un moyen d'assurer à l'utilisateur que les données ont bien été changées dans la base.
Voici le code javascript minimal:
Pour reprendre le code, lorsque j'initialise MaCLasse, je créé un formulaire qui n'est qu'un simple div, puis avec la fonction _getInfos j'envoie une demande des données xml et une fois les données reçus je reconstruit mon formulaire.
Dans mon formulaire j'ai un event sur un bouton qui lance à nouveau la fonction _getInfos() (par l'intermédiaire de _update()).
Quand j'exécute le code, mon div est bien changé par un formulaire. La où ça coince c'est au moment où je fait un clique sur le bouton: mes données ne sont pas réinitialisées depuis les données xml
.
Par contre si je fait un "form.replace(this._buildForm(type))" dans la fonction _update le replace marche (seulement je veux faire le replace qu'après retour des nouvelles données).
J'espère que j'ai été clair.
Modifié par Glopp (18 May 2009 - 16:34)
Toujours sur la même application (pour ceux qui suivent), cela avance mais j'ai maintenant un souci avec la fonction replace de Prototype.
En effet je désire recréer un élément de mon dom après retour d'une requête vers une page php.
Cet élément est composé de input et représente un formulaire de mise à jours. Ces inputs sont donc remplis suivant les infos d'une table et lorsque je valide la mise à jours je voudrais envoyer ma requête et récupérer les nouvelles données pour recharger les champs du formulaire.
Le but de la manœuvre est plus complexe mais en gros c'est un moyen d'assurer à l'utilisateur que les données ont bien été changées dans la base.
Voici le code javascript minimal:
var MaClasse = Class.create();
MaClasse.prototype = {
initialize: function() {
...
this.updateForm = new Element('div');
this.element.insert(this.updateForm);
this._getInfos();
},
_buildForm: function(type) {
var form = new Element('div',{'class':form});
...
//créé le form
...
Event.observe(
button,
'click',
function(event){
this._update(form, type);
}.bind(this));
return form;
},
_update: function(form, type) {
...
//ici la fonction n'est pas faite pour le test, elle ne fait que recharger les données
this._getInfos();
},
_getInfos: function() {
...
//récupère des données xml avec un Ajax.Request et lance _updateInfos()
},
_updateInfos: function() {
...
//recréé le formulaire avec les données de la base
this.updateForm.replace(this._buildForm('update'));
}
};
Pour reprendre le code, lorsque j'initialise MaCLasse, je créé un formulaire qui n'est qu'un simple div, puis avec la fonction _getInfos j'envoie une demande des données xml et une fois les données reçus je reconstruit mon formulaire.
Dans mon formulaire j'ai un event sur un bouton qui lance à nouveau la fonction _getInfos() (par l'intermédiaire de _update()).
Quand j'exécute le code, mon div est bien changé par un formulaire. La où ça coince c'est au moment où je fait un clique sur le bouton: mes données ne sont pas réinitialisées depuis les données xml

Par contre si je fait un "form.replace(this._buildForm(type))" dans la fonction _update le replace marche (seulement je veux faire le replace qu'après retour des nouvelles données).
J'espère que j'ai été clair.
Modifié par Glopp (18 May 2009 - 16:34)