Forum Clubic

HTML: FORM changeant selon selection via div/layer - OK mais script pris en compte dans les 2

Bonjour,
je me permets de vous demander de l’aide !

Voila j’ai mis en place un script qui me permet (selon la selection choisie dans la première balise de mon formulaire) d’afficher la suite du formulaire différemment le tout sans rechargement de la page en cours, via un script qui me change les attributs style de mes layers ! Soit visible, soit hidden ! donc en gros j’ai DEUX affichages possibles de mon formulaire !
Cela marche convenablement !
Or mon problème et là je suis dessus depuis une vingtaine d’heure minimum, c’est un vrai casse-tête…
C’est que j’ai 2 fonctions javascript dans cette même page ! Qui m’obligent donc à remplir certains champs de mon formulaire !
Je pense que vous allez vite comprendre là où je veux en venir !
Le souci est que naturellement ces fonctions sont prises en compte que je sois en AFFICHAGE LAYER 1 ou bien en AFFICHAGE LAYER 2 sur mon formulaire !

En gros : j’ai un champs obligatoire (grace à ma fonction javascript) sur mon AFFICHAGE LAYER 1…seulement c’est l’AFFICHAGE LAYER 2 que j’ai en “visible” et devant les yeux…ben mon formulaire ne sera pas envoyé car ma fonction javascript me demande de remplir le champs obligatoire de AFFICHAGE LAYER 1 !

Vous saisissez ?
A s’en arracher les cheveux ! j’vous l’dis ! :’(
J’ai pensé à “détruire” ma fonction javascript selon l’AFFICHAGE LAYER selectionné, or j’ai cherché et cherché et je crains que cela ne soit pas possible !

Mon formulaire contient le onsubmit suivant :

<form action="formmail.php" method="post" name="formulaire" id="formulaire" onsubmit="return verifiepremierformulaire(this)">

qui est en fait ma fonction de l’AFFICHAGE LAYER 1 ou 2 (visible ou hidden)

et je ne trouve pas comment faire… :s
donc j’ai pensé créer une fonction de type :

function magique() { 
if (document.formulaire.type_de_client.value=="choix1") { 
function valide(); 
 } 
if (document.formulaire.type_de_client.value=="choix2") { 
function valide2(); 
 } 
}

et appeler cette fonction onsubmit de mon formulaire au lieu de la précédente :

<form action="formmail.php" method="post" name="formulaire" id="formulaire" onsubmit="return magique(this)">

Seulement ça ne marche pas non plus… je sais que je suis débutant en la matière, mais en toute logique ça devrait passer non ?
je ne remplace qu’une fonction par une autre !
Si vous pouvez m’aiguiller ça serait fantastique !!!

Amicalement, ady :jap:

Le tout est de ne faire la vérification "champ obligatoire" que sur la partie visible de ton formulaire.
Avec tes valide() et valide2() tu ne dois pas être loin de la solution.
Pourquoi dis-tu que ça ne marche pas ?

Bonjour,
il manque des return là non?
[codebox]
function magique() {
if (document.formulaire.type_de_client.value=="choix1") {
return function valide();
}
if (document.formulaire.type_de_client.value=="choix2") {
return function valide2();
}
}
[/codebox]

merci pour vos réponses, seulement j’ai tout tenté dont les return ! et rien à faire ! si j’ai le malheur de changer la variable de mon onsubmit, plus rien ne fonctionne :??:

:hello:
Si tu galère trop, plutôt que de faire ta vérification sur le onsubmit, tu la fait avant en déclenchant toi-même le submit, en remplaçant ton bouton submit par un bouton simple qui appelle ta fonction.

par exemple avec 2 fonctions valide1 et valide2
function valide1(){
if (maVerif1()){
document.monForm.submit();
}
}

et sur ton layer 1, le bouton 1 pour valider le form dans l’état “1”:
<input type=“button” onclick=“valide1()”>

Si plus rien ne fonctionne, il faut voir à quel niveau ca bloque.
1- tu vérifies dans la console javascript que tu n’as pas d’erreur
2- tu “traces” tes fonctions

function magique() {
alert("la choix actuel est : " + document.formulaire.type_de_client.value)
if (document.formulaire.type_de_client.value=="choix1") {
reponse = valide();
alert("valide a retourné "+reponse);
return reponse;
}

function valide {
alert("je rentre dans la fonction valide");

alert("valide retourne …etc")
}

idem pour les autres
le but étant bien sûr que magique finisse par retourner true ou false selon les saisies.

Ensuite, il faut vérifier les paramètres qui sont envoyés en ligne.
Comme c’est du post, il faut que tu modifies ton programme côté serveur pour visualiser l’ensemble des arguments passés.
Ou alors tu mets un nom de fichier bidon, avec méthode get. Tu auras une erreur, mais la barre d’adresse te donnera l’ensemble des arguments