Est-ce que c'est du HTML valide pour avoir ce qui suit:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
Ainsi, lorsque vous soumettez "b", vous obtenez uniquement les champs dans le formulaire interne. Lorsque vous soumettez "a", vous obtenez tous les champs moins ceux de "b".
Si ce n'est pas possible, quelles solutions de contournement pour cette situation sont disponibles?
html
web-standards
standards-compliance
allyourcode
la source
la source
Réponses:
A. Ce n'est pas du HTML valide ni du XHTML
Dans la spécification officielle W3C XHTML, la section B. «Interdictions d'éléments», stipule que:
http://www.w3.org/TR/xhtml1/#prohibitions
Quant à l'ancienne spécification HTML 3.2 , la section sur l'élément FORMS indique que:
B. La solution de contournement
Il existe des solutions de contournement utilisant JavaScript sans avoir à imbriquer les balises de formulaire.
"Comment créer un formulaire imbriqué." (malgré le titre, il ne s'agit pas de balises de formulaire imbriquées, mais d'une solution de contournement JavaScript).
Réponses à cette question StackOverflow
Remarque: Bien que l'on puisse tromper les validateurs W3C pour passer une page en manipulant le DOM via des scripts, ce n'est toujours pas du HTML légal. Le problème avec l'utilisation de telles approches est que le comportement de votre code n'est plus garanti sur tous les navigateurs. (puisque ce n'est pas standard)
la source
Si quelqu'un trouve ce post ici, c'est une excellente solution sans avoir besoin de JS. Utilisez deux boutons d'envoi avec des attributs de nom différents vérifiez dans la langue de votre serveur quel bouton d'envoi a été enfoncé car un seul d'entre eux sera envoyé au serveur.
Le côté serveur pourrait ressembler à ceci si vous utilisez php:
la source
HTML 4.x et HTML5 interdisent les formulaires imbriqués, mais HTML5 permettra une solution de contournement avec l'attribut "form" ("propriétaire du formulaire").
Quant à HTML 4.x, vous pouvez:
la source
Comme d'autres l'ont dit, ce n'est pas du HTML valide.
Il semble que vous le fassiez pour positionner visuellement les formulaires les uns dans les autres. Si tel est le cas, faites simplement deux formulaires séparés et utilisez CSS pour les positionner.
la source
Non, la spécification HTML stipule qu'aucun
FORM
élément ne doit contenir un autreFORM
élément.la source
Vous pouvez répondre très facilement à votre propre question en saisissant le code HTML dans le validateur W3 . (Il comporte un champ de saisie de texte, vous n'aurez même pas à mettre votre code sur un serveur ...)
(Et non, cela ne sera pas validé.)
la source
utilisez plutôt une méthode javascript personnalisée dans l'attribut action du formulaire!
par exemple
la source
Une possibilité est d'avoir un iframe à l'intérieur du formulaire externe. L'iframe contient la forme intérieure. Assurez-vous d'utiliser la
<base target="_parent" />
balise à l'intérieur de la balise head de l'iframe pour que le formulaire se comporte comme faisant partie de la page principale.la source
non, voir w3c
la source
Non, ce n'est pas valable. Mais une "solution" peut être de créer une fenêtre modale en dehors de la forme "a" contenant la forme "b".
Cela peut être fait facilement si vous utilisez bootstrap ou matérialisez css. Je fais cela pour éviter d'utiliser iframe.
la source
Solution de contournement non JavaScript pour l'imbrication des balises de formulaire:
Parce que vous permettez
lors de la soumission de "a", les éléments suivants fonctionneraient, en utilisant des formulaires Web standard sans astuces JavaScript sophistiquées:
Étape 1. Mettez chaque formulaire sur sa propre page Web.
Étape 2. Insérez un iframe où vous voulez que ce sous-formulaire apparaisse.
Étape 3. Bénéfice.
J'ai essayé d'utiliser un site Web de jeux de code pour montrer une démo, mais beaucoup d'entre eux interdisent d'incorporer leurs sites Web dans des iframes, même dans leur propre domaine.
la source
Si vous avez besoin de votre formulaire pour soumettre / valider des données dans une base de données relationnelle 1: M, je recommanderais de créer un déclencheur de base de données "après insertion" sur la table A qui insérera les données nécessaires pour la table B.
la source
Non, ce n'est pas valide mais vous pouvez tromper votre position de forme intérieure sur le
HTML
avec l'aideCSS
et l'jQuery
utilisation. Créez d'abord un conteneur div à l'intérieur de votre formulaire parent, puis à tout autre endroit de la page, le div avec votre formulaire enfant (intérieur):....
Donnez à votre div de conteneur une hauteur stable
Remerciez la position "other_form" par rapport à la division du conteneur.
PS: Vous devrez jouer avec les chiffres pour que ça soit joli.
la source