11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, voici mon problème :

J'ai un site avec un système d'onglet. Un clic sur un onglet modifie le contenu du "corps" (c'est un div vide à la base) grâce à une requête AJAX qui récupère le contenu d'une autre page (une JSP), et l'insère à l'intérieur de cette balise (j'utilise prototype et la fonction Ajax.Updater). Jusque là, pas de soucis.

Le problème, c'est que chaque page contient un formulaire, et, lorsque que je change de page, le contenu tapé est perdu (je voudrais n'avoir qu'un bouton de submit dans le dernier onglet).

J'ai donc pensé à enregistrer le contenu tapé à la volée (sur un évènement de type onBlur par exemple), mais où et comment l'enregistrer ? Les variables de sessions me semblent appropriées, mais mes recherches entre AJAX et les variable de sessions en JSP n'ont pas été fructueuses (tout ce que j'ai trouvé était vraiment vague, et ça ne correspondait généralement pas à ce que je voulais faire).

En résumé : Je voudrais appliquer un évènement onBlur sur chacun des champs, qui appelerait une requete AJAX asynchrone, qui elle-même se chargerait d'enregistrer la valeur saisie sur le serveur, de manière plutôt persistante (type session, pas de contact avec la base de données à ce moment-là car trop lourd (j'utilise Struts + Spring + Hibernate, imaginez le bordel pour la centaine de champs que je dois gérer)).
Ceci pour conserver les valeurs tapées même en changeant d'onglet.

Merci d'avance pour votre aide Smiley cligne
Modifié par Deadly Pumpkin (02 Dec 2009 - 17:18)
Tu ne peux pas placer l'ensemble des valeurs enregistrées dans des champs cachés à la dernière étape ? En attendant tu les enregistres en javascript... puisque tu ne changes pas réellement de page, c'est possible.
a écrit :
Un clic sur un onglet modifie le contenu du "corps" (c'est un div vide à la base) grâce à une requête AJAX qui récupère le contenu d'une autre page (une JSP)

Et pourquoi pas rajouter du contenu et masquer l'ancien. Ca fait que ainsi ton form reste en entier dans le dom et donc aucune perte.
Sinon en javascript tu peux écrire des cookies aussi.
EDIT :

En fait c'est bon, tout fonctionne comme je le veux ^^
J'ai opté pour la solution de MoOx, à savoir mettre tous les div contenant des include JSP dans le "corps", cachés par défaut (class="hidden", display:none), puis je change leurs className en javascript selon ce que je veux afficher (class="showed", display:block).
Mon contenu est donc toujours présent, même en rechargeant la page Smiley lol

Merci à vous deux Smiley cligne
Modifié par Deadly Pumpkin (02 Dec 2009 - 17:18)