2009-05-26 7 views
0

Voici le problème:Soumission de formulaire dynamique en utilisant javascript - comment code élégant?

Ma page affiche un ensemble d'éléments. Chaque élément est associé à une case à cocher (qui fait partie d'un formulaire). L'utilisateur peut cocher l'une de ces cases et appuyer sur le bouton 'Supprimer'. La même page a également un bouton «Télécharger» qui mettrait en ligne une feuille d'articles Excel. À l'heure actuelle, mon action de formulaire sumbits à dire: "xyzAction" et j'ai deux gestionnaires différents (analogues à Struts Action) - un pour la suppression des magasins et d'autres pour le téléchargement des magasins.

On me dit que la meilleure manière de faire ceci est de compter sur javascript en faisant l'un de ceux-ci: 1)) Commutation d'action de forme sur la pression des boutons de téléchargement et de suppression - là en invoquant différentes actions. 2) Utilisez une variable cachée "act" pour le mettre à supprimer/télécharger et soumettre à un seul formulaire. L'action côté serveur prendrait soin d'identifier l'acte et de le transmettre à l'action correspondante.

Approche (1) - me semble très inélégant. Jouer avec une action de forme semble inutile. Approche (2) - ne fonctionnerait évidemment pas si votre javascript est désactivé et n'est pas très élégant non plus.

Il doit y avoir une troisième façon de faire cela ?, qui me rendrait heureux?

Répondre

1

Vous devez d'abord obtenir le code HTML correct.

Vous avez deux actions différentes, vous devriez donc avoir deux formulaires - en règle générale, chaque formulaire ne devrait avoir qu'un seul bouton d'envoi. C'est la meilleure pratique pour HTML et assurera que la page fonctionne sans JS ou toute autre ruse. Une fois la page fonctionnant comme ceci, utilisez JS pour manipuler le DOM afin de produire l'interface utilisateur dont vous avez besoin.

Ceci utilise JS pour ajouter behvour à l'interface utilisateur et est la meilleure pratique pour JS discret.

(Si vous voulez vraiment regrouper vos actions dans un seul formulaire, il est préférable de changer l'action du formulaire avec JS. Mais considérez ce qui se passerait si un utilisateur coche une case puis change d'avis et télécharge un fichier en laissant la case cochée.Veillez à ce que cela ne supprime rien.)

3

Il semble que vous ayez besoin de deux formes différentes pour les deux actions différentes.

+0

peut être ..? mais dites que ce n'est pas le cas, alors comment le résoudre? – Jay