358 votes

Est-il possible d'avoir un formulaire html à l'intérieur d'un autre formulaire html ?

Est-ce que c'est du html valide d'avoir le suivant :

<form action="a">
    <input.../>
    <form action="b">
        <input.../>
        <input.../>
        <input.../>
    </form>
    <input.../>
</form>

Ainsi, lorsque vous soumettez "b", vous obtenez uniquement les champs du formulaire interne. Lorsque vous soumettez "a", vous obtenez tous les champs, sauf ceux du formulaire "b".

Si ce n'est pas possible, quelles sont les solutions de rechange disponibles pour cette situation ?

6voto

ribot Points 638

Une possibilité est d'avoir un iframe à l'intérieur du formulaire externe. L'iframe contient le formulaire intérieur. Veillez à utiliser la balise <base target="_parent" /> à l'intérieur de la balise head de l'iframe pour que le formulaire se comporte comme une partie de la page principale.

5voto

Andreas Niedermair Points 8907

Utilisez plutôt une méthode javascript personnalisée dans l'attribut action du formulaire !

par exemple

<html>
    <head>
        <script language="javascript" type="text/javascript">
        var input1 = null;
        var input2 = null;
        function InitInputs() {
            if (input1 == null) {
                input1 = document.getElementById("input1");
            }
            if (input2 == null) {
                input2 = document.getElementById("input2");
            }

            if (input1 == null) {
                alert("input1 missing");
            }
            if (input2 == null) {
                alert("input2 missing");
            }
        }
        function myMethod1() {
            InitInputs();
            alert(input1.value + " " + input2.value);
        }
        function myMethod2() {
            InitInputs();
            alert(input1.value);
        }
        </script>
    </head>
    <body>
        <form action="javascript:myMethod1();">
            <input id="input1" type="text" />
            <input id="input2" type="text" />
            <input type="button" onclick="myMethod2()" value="myMethod2"/>
            <input type="submit" value="myMethod1" />
        </form>
    </body>
</html>

5voto

christian studer Points 5948

Vous pouvez répondre à votre propre question très facilement en saisissant le code HTML dans le champ W3 Validator . (Il comporte un champ de saisie de texte, vous n'aurez même pas à mettre votre code sur un serveur...)

(Et non, il ne sera pas validé).

4voto

tliff Points 1162

Non, voir w3c

0voto

Toon Krijthe Points 36327

Même si elle est autorisée (ce qui n'est pas le cas), elle crée une interface utilisateur très confuse.

Pour un utilisateur, un formulaire est un formulaire et vous ne devriez pas changer cela, sauf si vous voulez ajouter de la confusion.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X