Bonjour à toutes et à tous,
Nous avons souvent les mêmes méthodes javascript qui reviennent de façon récurrente :
Nous chargeons des données avec Ajax, pour remplir un formulaire plus ou moins grand.
Lorsque l'utilisateur a fait ses modifications, il clique sur le bouton enregistrer, et nous chargeons la saisie dans un objet que nous parsons en JSON (ou autre) et que nous envoyons au serveur pour être traité...
Et ce, inlassablement, au fil des pages nécessaires à nos applications.
Une idée à germer dans mon esprit, et je me suis dit :
"Est il possible de charger les éléments HTML d'un formulaire et, dès qu'une valeur est modifiée, répercuter immédiatement sur l'évènement la modification dans l'objet ?"
Cela nous épargnerait des lignes non négligeables de codes.
Comme un exemple vaut mieux qu'un discours, voici ce que j'ai fait pour le moment:
(Attention: j'utilise prototype, mais cela doit être adaptable avec d'autres framework javascript)
le formulaire HTML :
L'objet de données javascript (prototype) :
L'objet Formwork (toujours en prototype, et faut bien lui donner un nom
) :
Et le petit bout de code, en bas de la page où se trouve le formulaire pour déclencher tout ça :
sur le principe :
1. Au chargement de la page, les éléments de formulaire (avec la classe 'saisie') sont chargés
2. Si une valeur est modifiée dans une zone de saisie, la propriété de l'objet est modifiée sur le blur
Pour le moment, ce n'est pas optimisé.
Mais j'aimerais avoir votre avis sur ce système.
Bonne ou mauvaise idée ?
Quid de la sécurité ?
Merci de vos retours
Nous avons souvent les mêmes méthodes javascript qui reviennent de façon récurrente :
Nous chargeons des données avec Ajax, pour remplir un formulaire plus ou moins grand.
Lorsque l'utilisateur a fait ses modifications, il clique sur le bouton enregistrer, et nous chargeons la saisie dans un objet que nous parsons en JSON (ou autre) et que nous envoyons au serveur pour être traité...
Et ce, inlassablement, au fil des pages nécessaires à nos applications.
Une idée à germer dans mon esprit, et je me suis dit :
"Est il possible de charger les éléments HTML d'un formulaire et, dès qu'une valeur est modifiée, répercuter immédiatement sur l'évènement la modification dans l'objet ?"
Cela nous épargnerait des lignes non négligeables de codes.
Comme un exemple vaut mieux qu'un discours, voici ce que j'ai fait pour le moment:
(Attention: j'utilise prototype, mais cela doit être adaptable avec d'autres framework javascript)
le formulaire HTML :
Nom : <input type="text" id="Nom" class="saisie"><br/>
Prenom : <input type="text" id="Prenom" class="saisie"><br/>
Sexe : <input type="text" id="Sexe" class="saisie"><br/>
Age : <input type="text" id="Age" class="saisie"><br/>
Expérience : <input type="text" id="Experience" class="saisie"><br/>
Téléphone : <input type="text" id="Telephone" class="saisie"><br/>
L'objet de données javascript (prototype) :
var Martin = {};
Martin.Nom = 'Martin';
Martin.Prenom = 'Jean';
Martin.Sexe = 'Masculin';
Martin.Age = "40ans";
Martin.Experience = "13ans";
Martin.Telephone = "XX XX XX XX XX";
L'objet Formwork (toujours en prototype, et faut bien lui donner un nom

var FormWork = {};
FormWork = Class.create();
FormWork.prototype =
{
initialize : function()
{
},
AjouteMethode : function(elt)
{
if (!(elt = $(elt))) return;
Element.addMethods({
DatatoHtml : function(element, Obj)
{
element.value = Obj[element.id];
},
HtmltoData : function(element, Obj)
{
Obj[element.id] = element.value;
}
});
},
InstancieHTML : function(element, TabData)
{
this.AjouteMethode(element);
element.DatatoHtml(TabData);
element.on('blur', function(e)
{
$(Event.element(e)).HtmltoData(TabData);
}.bind(this));
}
}
Et le petit bout de code, en bas de la page où se trouve le formulaire pour déclencher tout ça :
document.observe('dom:loaded', function() {
var FW = new FormWork();
$$('.saisie').each(function(elt)
{
FW.InstancieHTML(elt, Martin);
});
});
sur le principe :
1. Au chargement de la page, les éléments de formulaire (avec la classe 'saisie') sont chargés
2. Si une valeur est modifiée dans une zone de saisie, la propriété de l'objet est modifiée sur le blur
Pour le moment, ce n'est pas optimisé.
Mais j'aimerais avoir votre avis sur ce système.
Bonne ou mauvaise idée ?
Quid de la sécurité ?
Merci de vos retours
