[XHTML] Formulaires, Ajax et mode réhaussé

Dans le cadre d’une petite application web que je suis en train de faire, j’ai rajouté la possibilité d’édition d’items, avec un joli formulaire et son bouton “Envoyer”.

Cette application web doit pouvoir fonctionner sur une large variété de “devices” j’ai notamment prévu une version pour les hand held, comme les Pocket PC, iPhone, la PSP ou même la DSi. Je ne suis donc pas sur d’avoir toutes les options genre “Javascript” et “Ajax”.

Il se trouve que cet item dispose de “liens” vers d’autres items que je dois pouvoir rajouter; j’ai donc des mini formulaires ou l’on peut saisir le nom de l’autre item avec un bouton “Lier”. (par similarité imaginez un site d’ecommerce qui vous propose un produit et qui marque en dessous “produits similaires”, ou bien “les internautes ont aussi été intéressés par”).

Vu que j’ai besoin de fonctionner en mode réhaussé (ie, le site doit pouvoir fonctionner sans javascript ni ajax) je me retrouve donc à avoir deux formulaires sur cette page, et si j’ajoute un nouveau “lien”, je perds les modifications éventuelles que l’utilisateur aurait apporté à la description de l’item sur le formulaire principal.

Bref, j’ai l’impression d’être coincé. Si quelqu’un avait une idée lumineuse, ca me sortirait une épine du pied.

(Moi j’ai rien compris, et vu le nombre de réponses, je dois pas être le seul.)

Sans être sur d’avoir tout compris, je dirai que je vois pas de solution pour gérer les données communes de deux formulaires distincts sans javascript.
A part peut-être mettre tout dans le meme formulaire, et gerer le comportement en fonction du value du bouton submit qui a été actionné.
Un peu bricolage ca quand meme.

[quote=“gandhu, post:3, topic: 49535”]Sans être sur d’avoir tout compris, je dirai que je vois pas de solution pour gérer les données communes de deux formulaires distincts sans javascript.
A part peut-être mettre tout dans le meme formulaire, et gerer le comportement en fonction du value du bouton submit qui a été actionné.
Un peu bricolage ca quand meme.[/quote]

Pas mieux. La seule solution sans javascript est effectivement de faire confiance au serveur pour “regénérer” les inputs avec les valeurs précédemment entrées, mais avec deux formulaires séparées, c’est juste pas possible.

La solution m’a été donnée par Ivru sur IRC. En fait la solution est simple; faire un seul formulaire, avec plusieurs boutons envoyer. La norme HTML indique que seul la valeur du bouton qui a été utilisé pour envoyer le formulaire est envoyé (donc si j’ai trois submit avec comme valeur “fonction1” “fonction2”, “fonction3” je sais quel bouton a été appuyé).

Étant donné que je sais quel bouton a été appuyé, je peux faire le traitement idoine sur les champs associés au bouton (cela nécessite évidemment une codification particulière des champs, genre tous les champs commençant par “fonction1_” ).

Les champs qui n’ont pas été traités sont stockés en session, et je redirige vers la page précédente d’édition si c’est pas le bouton principal de sauvegarde qui a été utilisé (l’utilisateur n’a donc que modifié un lien), et pour chaque champ je prends la valeur stockée en session modifiée.

L’utilisateur n’a donc pas perdu ses changements dans la page, et peut donc continuer l’édition du formulaire comme si de rien n’était.