Problème de confusion

Ce topic a été résolu
TrecKo

TrecKo Le 4 août 2016 à 17:45 (Édité le 25 janvier 2019 à 17:52)

Bonjour,

Je rencontre un petit problème avec du javascript, sachant que c'est la première fois que je développe dans se langage, je ne m'y connais pas trop.

Alors, j'ai un formulaire
<form method="POST">
   <input type="text" name="titre" /><br /><br />
   <textarea type="text" name="description"></textarea><br /><br />
   <input type="text" name="url" /><br /><br />
   <input type="text" name="image" /><br /><br />
   <input onclick="refresh()" type="submit" name="ajouterform" value="Valider" />
</form>
Donc comme vous pouvez le voir, dans mon input de type submit, j'ai mis le onclick qui déclenchera ma fonction javascript.

Voici mon code de javascript
function refresh() {
   var x = document.getElementById("erreur");
    x.className = "visible";
    setTimeout(function(){ x.className = x.className.replace("visible", ""); }, 3000);
}
Normalement quand je clique sur le bouton ( type submit ), le javascript ajoute la classe visible à ma div id = erreur et quand la class visible est mise, le message d'erreur s'affiche. Mais moi quand je clique sur le bouton pour valider, bah sa fait rien, la class ne s'ajoute pas à ma div :/

Et quand je créer un <button> en dehors du <form> avec le onclick, bah la le script fonctionne :/
Je ne sais pas si c'est possible de déclencher le onclick dans un <form method="post">..

Si vous pouvez me donner des pistes pour que je puisse résoudre mon problème 😀

Merci de votre compréhension.
Cordialement, TrecKo
TheOldNoob

TheOldNoob Le 4 août 2016 à 19:04

Salut l'ami,

Oublie le js pour faire tes message d'erreur, on ne vérifie plus les formulaires en js depuis un moment, parce que c'est compliquer et que c'est pas des super vérifications.

Utilise du php, si tu a besoin de piste pour t'aider a faire des condition qui ferons aparaitre un message d'erreur, de succes ou simplement faire disparaitre ton formulaire en cas de succes, je t'aiderais 😀
TrecKo

TrecKo Le 4 août 2016 à 19:14

Salut

Tu as pas très bien compris ce que je voulais dire ^^
Donc si tu veux, j'ai un formulaire de contact, j'ai fais les vérifications en PHP et tout, la base. Après pour afficher l'erreur, j'ai fais une condition
<?php if(isset($erreur)) { echo $erreur; } ?>
Et autour de cette ligne de code, j'ai mis des balise <div>, ce qui donne ceci
<div id="erreur"><?php if(isset($erreur)) { echo $erreur; } ?></div>
Et, ce que je veux faire, c'est que quand j'appui sur le bouton 'Envoyer" de mon formulaire de contact, sa envoi le formulaire dans ma base de donnée et en même temps sa déclenche mon script javascript et le script javascript va ajouter une classe à ma <div id="erreur">

L'envoi du formulaire dans la base de donnée sa fonctionne, niveau PHP tout est bon mais c'est au niveau du bouton "Envoyer" pour déclencher pour script javascript :/

Pour le moment, quand je clique sur Envoyer, les informations se mettent bien dans ma base de donnée mais le javascript ne se déclenche pas, du coup mon erreur ne s'affiche pas car mon erreur s'affiche que si la class="visible" est dans la <div id="erreur"> mais comme sa ne déclenche pas le script, ma class ne s'ajoute pas et mon erreur n'apparaît pas.

je suis embêter avec sa, et comme je l'ai dit, c'est la première fois que je développe du javascript du coup je ne m'y connais pas trop trop :/
TheOldNoob

TheOldNoob Le 4 août 2016 à 19:44


Donc tu veux juste que en cas d'erreur, ça affiche ta div id="erreur" ?
TrecKo

TrecKo Le 4 août 2016 à 19:48 (Édité le 4 août 2016 à 19:51)

Non, je veux que quand je clique sur le bouton Valider, mon script JS s'exécute donc sa va ajouter la class "valide" à ma div pendant 3 secondes et après la class disparaît.

Mais j'ai essayé de mettre l'input hors des balises <form> et là le script s'exécute. Et le script ne s'exécute pas quand l'input est entre les balises <form>
Car entre les balises <form> sa va exécuter mon formulaire et sa ne veux pas exécuter le script JS en même temps que l'envoi du formulaire.

Je ne sais pas si tu vois où je veux en venir ^^
TheOldNoob

TheOldNoob Le 4 août 2016 à 20:01

En fait, j'ai du mal a comprendre pourquoi tu veux afficher une div d'erreur pendant 3s seulement après validation du formulaire 😄
TrecKo

TrecKo Le 4 août 2016 à 20:17 (Édité le 4 août 2016 à 20:20)

Je vais essayer de mieux t'expliquer, moi je me comprend car je sais ce que je veux faire mdr

Alors, j'ai mon formulaire, il fonctionne parfaitement, avant j'avais un CSS pour les erreurs mais j'ai envie de modifier le CSS, du coup j'ai vu un peux sur le net des effets avec du JS, lorsqu'on clique sur un bouton, un message s'affiche et disparaît au bout de x secondes.

Donc là, la div qui contient l'erreur à du CSS pour le design et il a display: none donc forcément sa n'affiche pas la box et lorsqu'on clique sur le bouton, une classe s'ajoute à notre div, pour moi c'est la class visible et cette classe visible dans le CSS je lui ai mis display: block pour qu'on puisse la voir et avec le JS au bout de 3 secondes, la class s'enlève de la div et la box redevient invisible.

Moi j'ai essayer de faire sa pour mes messages d'erreurs, donc j'ai mon CSS, et au niveau du bouton quand je clique sur le bouton, sa m'exécute le code PHP et sa ne veux pas m'exécuter en même temps mon code JS qui va servir à ajouter la class visible dans ma div pour que le message d'erreur s'affiche.

J'ai essayer de mettre le bouton hors des balises <form> et le script JS s'exécute bien et à partir du moment où le bouton est dans le <form> le script JS ne s'exécute pas..

J'espère que tu as compris ce que je veux faire mdr

Après je peux faire sans script et afficher juste l'erreur mais j'aimerai bien un peux d'animation sur mon site du coup faire apparaitre la class lors de l'appui du bouton et supprimer la class après 3 secondes écoulées.
TheOldNoob

TheOldNoob Le 4 août 2016 à 20:34

Alors, pour moi, un message d'erreur de 3s, c'est pas assez long. Si il y a plus d'une erreur, la personne va devoir relire une a une les erreurs au fure et a mesure qu'elle les corriges. Donc script inutile a mon sense, puisqu'elle n'aura jamais le temps de lire toute les erreurs, ni le temps de se relire.
TrecKo

TrecKo Le 4 août 2016 à 20:40

Ouais, après je peux laisser l'animation pour afficher la box et laisser la box afficher pour que la personne puisse avoir le temps de tout lire 😀 

Merci quand même 😄
TheOldNoob

TheOldNoob Le 4 août 2016 à 20:52

Ok, donc simplement un affichage des la div si il y a erreurs devrais suffire 😋


Dés fois on va chercher trop loin des trucs pas forcement utile. Du coup on se complique la vie ^^
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte