Comment surmontez-vous le formulaire HTML de nidification limitation?

Je sais que le XHTML ne prend pas en charge imbriquée balises de formulaire et j'ai déjà lu les autres réponses ici sur un Débordement de Pile à ce sujet, mais je n'ai toujours pas trouvé une solution élégante à ce problème.

Certains disent que vous n'en avez pas besoin et qu'ils ne peuvent pas penser à un scénario de ce qui serait nécessaire. Eh bien, personnellement, je ne peux pas penser à un scénario que je n'ai pas besoin.

Voyons un exemple très simple:

Vous faire un blog, application et vous disposez d'un formulaire avec quelques champs pour la création d'un nouveau poste et d'une barre d'outils avec des "actions" comme "Sauver", "Supprimer", "Annuler".

<form
 action="/post/dispatch/too_bad_the_action_url_is_in_the_form_tag_even_though_conceptually_every_submit_button_inside_it_may_need_to_post_to_a_diffent_distinct_url"
method="post">

    <input type="text" name="foo" /> <!-- several of those here -->
    <div id="toolbar">
        <input type="submit" name="save" value="Save" />
        <input type="submit" name="delete" value="Delete" />
        <a href="/home/index">Cancel</a>
    </div>
</form>

Notre objectif est d'écrire la forme ne nécessite pas de JavaScript, juste un bon vieux formulaire HTML et boutons de soumission.

Depuis l'URL de l'action est définie dans la balise Form et non pas dans chaque bouton soumettre, notre seule option est de poster une URL générique et puis "si...alors...sinon" pour déterminer le nom du bouton qui a été soumis. Pas très élégant, mais notre seul choix, car nous ne voulons pas compter sur le JavaScript.

Le seul problème, c'est qu'en appuyant sur "Supprimer", soumettra TOUS les champs de formulaire sur le serveur, même si la seule chose nécessaire pour cette action est Caché entrée avec le post-id. Pas très grand-chose dans ce petit exemple, mais j'ai des formes avec des centaines (façon de parler) des champs et des onglets dans mon LOB applications (en raison des exigences) soumettre tout en un-aller et en tout cas cela semble très inefficace et des déchets. Si le formulaire de nidification a été pris en charge, je voudrais au moins être en mesure de terminer le "Supprimer" bouton "soumettre" à l'intérieur de sa propre forme avec seulement l'après-champ id.

Vous pouvez dire "mettre en œuvre le "Supprimer" comme un lien au lieu de l'envoyer". Ce serait faux à bien des niveaux, mais surtout à cause des effets Secondaires des actions comme le "Supprimer", ici, ne doit jamais être une requête GET.

Donc ma question (en particulier pour ceux qui disent qu'ils n'ont pas besoin de formulaire de nidification) est Ce que pouvez-VOUS faire? Est-il une solution élégante, je suis absent ou la ligne de fond est vraiment "Soit besoin de JavaScript ou de soumettre tout"?

InformationsquelleAutor gCoder | 2009-02-28