par
Christine » 07 juil. 2007, 15:28
J'aimerais bien supprimer l'imbrication, mais comment je fais pour conserver ma "fonctionnalité ajax" ? Voici en gros le code de mes forms :
<form name="form1" id="form1" action="traitement.php" method="POST" enctype="multipart/form-data">
(...ici quelques champs de form divers...)
<form name="form2" id="form2" action="" method="" onsubmit="return false;">
<input type="text" name="codepostal" id="codepostal" onBlur="majListeVilles(this.form)">
<div id="ChoixVille"style="display:inline"><select name="ListeVille" id="ListeVille"></select></div>
</form> (fermeture du form imbriqué)
(...ici encore quelques champs de forms...)
<input type="submit" value="OK" onClick="javascript:document.form1.action='traitement.php';document.form1.submit()">
</form> (fermeture du form principal)
Sans vous donner le détail, ma fonction majListeVilles(this.form) renvoie à un fichier php "invisible" qui exécute une requête de sélection des villes correspondant au code postal saisi, qui alimente ensuite ma liste de choix <select> avec cette liste de villes filtrées, le tout sans rechargement de page, normal puisque ce form imbriqué possède la méthode "onsubmit:return false;", et que son "action" et sa "method" sont définies au cours de l'exécution de ma fonction de MAJ des villes.
Et c'est là où je pense que l'imbrication de 2 forms est indispensable, parce que leurs 2 actions sont totalement différentes ainsi que leur résultat : l'un met simplement à jour le contenu d'une liste de choix, tandis que l'autre est chargé de passer les variables pour le traitement.
Donc malgré mon début de solution, il me manque le truc pour forcer mon form principal à transmettre les variables des 2 champs situés à l'intérieur du form imbriqué.
Voilà, ya bien une solution bon sang ???!!! désolée, je m'énerve
Comme précisé par Sékiltoyai, il est syntaxiquement interdit d'imbriquer des formulaires en HTML quelle que soit la norme utilisée (HTML 4 ou XHTML).
Donc la solution passer par la suppression de l'imbrication. Ça ne t'oblige nullement à supprimer pour autant les champs contenus dans ce second formulaire.
Et pour terminer, tu as trouvé toi-même une solution en JavaScript.
J'aimerais bien supprimer l'imbrication, mais comment je fais pour conserver ma "fonctionnalité ajax" ? Voici en gros le code de mes forms :
<form name="form1" id="form1" action="traitement.php" method="POST" enctype="multipart/form-data">
(...ici quelques champs de form divers...)
<form name="form2" id="form2" action="" method="" onsubmit="return false;">
<input type="text" name="codepostal" id="codepostal" onBlur="majListeVilles(this.form)">
<div id="ChoixVille"style="display:inline"><select name="ListeVille" id="ListeVille"></select></div>
</form> (fermeture du form imbriqué)
(...ici encore quelques champs de forms...)
<input type="submit" value="OK" onClick="javascript:document.form1.action='traitement.php';document.form1.submit()">
</form> (fermeture du form principal)
Sans vous donner le détail, ma fonction majListeVilles(this.form) renvoie à un fichier php "invisible" qui exécute une requête de sélection des villes correspondant au code postal saisi, qui alimente ensuite ma liste de choix <select> avec cette liste de villes filtrées, le tout sans rechargement de page, normal puisque ce form imbriqué possède la méthode "onsubmit:return false;", et que son "action" et sa "method" sont définies au cours de l'exécution de ma fonction de MAJ des villes.
Et c'est là où je pense que l'imbrication de 2 forms est indispensable, parce que leurs 2 actions sont totalement différentes ainsi que leur résultat : l'un met simplement à jour le contenu d'une liste de choix, tandis que l'autre est chargé de passer les variables pour le traitement.
Donc malgré mon début de solution, il me manque le truc pour forcer mon form principal à transmettre les variables des 2 champs situés à l'intérieur du form imbriqué.
Voilà, ya bien une solution bon sang ???!!! désolée, je m'énerve :?
[quote="Cyrano"]Comme précisé par [b]Sékiltoyai[/b], il est syntaxiquement interdit d'imbriquer des formulaires en HTML quelle que soit la norme utilisée (HTML 4 ou XHTML).
Donc la solution passer par la suppression de l'imbrication. Ça ne t'oblige nullement à supprimer pour autant les champs contenus dans ce second formulaire.
Et pour terminer, tu as trouvé toi-même une solution en JavaScript.[/quote]