IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Incohérence avec onsubmit ?


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut Incohérence avec onsubmit ?
    Bonjour,

    J'ai beaucoup lu à ce sujet. J'ai simplement envie de vérifier un formulaire avant envoi. Classique, oui, mais là ça ne marche pas.

    Mon premier essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function valider(form)
    		{
    			alert("Saisissez les données");
    			return false;
    		}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="formulaire" id="formulaire" method="post" action="questionnaire.php" onsubmit="return valider(this)">
    ...
    ...
    <input type="submit" name="valider" value="Valider le questionnaire" />
    IE :Il ne se passe rien. Même pas d'alert.
    FIREFOX : Le formulaire est tout le temps envoyé malgré le return false.

    Note: En enlevant le "this" pour faire onsubmit ="return valider()" et function valider() ça ne change strictement rien.

    Deuxième essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" id="formulaire" method="post" action="questionnaire.php" onsubmit="return false">
    Là, quand même, le formulaire ne s'envoie pas, ni IE ni Firefox.

    Où est ce que je me trompe dans mon premier essai ?

    Merci !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    Vire le return dans le onsubmit.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" id="formulaire" method="post" action="questionnaire.php" onsubmit="valider(this)">
    Modifie le nom de la paramètre "form" car ça peut te causer un problème.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form name="formulaire" id="formulaire" method="post" action="questionnaire.php" onsubmit="return valider(this.form)">
    ...
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function valider(monform)
    		{
    			alert("Saisissez les données");
    			return false;
    		}

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut empêcher la soumission de formulaire
    Salut,

    Ceci est l'illustration de ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title>empêcher la soumission de formulaire</title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <form id="f" action="" method="post" onsubmit="return fn(this);">
        <input id="b1" type="submit" name="b" value="b1" />
      </form>
      <script type="text/javascript">
      <!--
      function fn(form) {
        alert(form);
        return false;
      }
      //-->
      </script>
    </body>
    </html>
    Et ça fonctionne, j'aurais tendance à dire que l'erreur est ailleurs.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé vos astuces, ça ne change rien.

    Et je suis étonné de voir que le code de franculo_caoulene marche
    Mon formulaire ne contient pourtant que des input radio / text, des select etc...

    Avant que j'enlève tout pour voir d'où vient l'erreur, vous n'avez pas une idée ?

    Merci quand même !

  6. #6
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Citation Envoyé par jean1190 Voir le message
    Avant que j'enlève tout pour voir d'où vient l'erreur, vous n'avez pas une idée ?
    Nous ne sommes pas devins. Repartir de zéro est dans ton cas la meilleure façon de faire.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    js est activé ???

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Oui et je l'utilise un peu partout sur mon site pour Ajax.

    "Nous ne sommes pas devins. Repartir de zéro est dans ton cas la meilleure façon de faire."
    Si j'ai utilisé le smiley "", c'était justement pour montrer que j'avais bien compris que j'allais devoir m'y coller

    Merci en tout cas. Je reviendrais lorsque j'aurais de nouvelles informations !

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par jean1190 Voir le message
    Oui et je l'utilise un peu partout sur mon site pour Ajax.
    Et ton formulaire est généré avec Ajax ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    		<title>Questionnaire en ligne</title>
    		<meta Name="description" Content="Questionnaire en ligne" />
    		<meta Name="keywords" Content="Questionnaire congrès société clinique toxicologie" />
    		<link rel="stylesheet" media="screen" type="text/css" title="Design" href='style_main.css' />
    		<script type = "text/javascript">
    			function valider(monform)
    			{
    				alert("Saisissez les données");
    				return false;
    			}
     
    		</script>
    	</head>
     
    	<body>
    		<div id = "questionnaire">
    			<form name="formulaire" id="formulaire" method="post" action="questionnaire.php" onsubmit="return valider(this);">
    				<div id ="bouton"> 
    					<input type="submit" name="valider" value="Valider le questionnaire" />
    				</div>
    			</form>
    		</div>									
    	</body>
    </html>
    J'ai tout enlevé, il ne reste plus que ça. Et ça ne marche toujours pas. Le formulaire est envoyé directement.
    J'ai essayé une nouvelle fois d'enlever le return, d'ajouter this.form... Rien ne semble fonctionner.

    Je tenais à préciser qu'en copiant collant le code de notre ami franculo, ça fonctionne.
    Je ne vois franchement pas où est mon erreur.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Et ton formulaire est généré avec Ajax ?
    Absolument pas, c'est vraiment le formulaire "de base". C'est juste un questionnaire tout simple. Un document HTML, un script PHP pour remplir la base de données, et (j'aimerais) une fonction javascript pour vérifier que tous les champs sont bien remplis.

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type = "text/javascript">
    Evite les espaces entre les attributs et leur valeur.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form id="formulaire" method="post" action="questionnaire.php" onsubmit="return fn(this);">
    ...
    function fn(form) {
    			alert(form);
    			return false;
    		}
    Ca marche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form id="formulaire" method="post" action="questionnaire.php" onsubmit="return valider(this);">
    ...
    function valider(form) {
    			alert(form);
    			return false;
    		}
    Ca ne marche pas !

    Voilà mes conclusions : je n'y comprends rien.
    J'ai essayé plusieurs fois, et je confirme que le mot "valider" fait tout bugguer. J'ai essayé avec "tartanpion" ça marche

    P-S: Merci Bovino, j'ai corrigé au passage !

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    L'attribut name du bouton submit doit être différent du nom de la fonction.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Bizarre qu'il y ait une corrélation entre les deux. Tu dis ça comme si c'était d'une logique évidente

  16. #16
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut ne pas nommer une fonction comme un élément de formulaire
    Hé bien oui, avec un élément de formulaire et une fonction portant le même nom on obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title>ne pas nommer une fonction comme un élément de formulaire</title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <form id="f" action="" method="post" onsubmit="alert(valider);return false;">
        <input id="b1" type="submit" name="valider" value="b1" />
      </form>
      <script type="text/javascript">
      <!--
      function valider() {
        alert("blah");
      }
      //-->
      </script>
    </body>
    </html>
    L'alerte ne trouve pas la fonction, mais le bouton de soumission. Elle considère valider comme le raccourci de document.forms[0].valider, CQFD.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. champ vide avec onsubmit
    Par afrodje dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/10/2007, 15h55
  2. Résultat requête incohérent avec DAO
    Par ajuveneton dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/06/2007, 17h02
  3. pb avec OnSubmit ds le form
    Par MANU_2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/08/2006, 09h24
  4. probleme formulaire avec onsubmit
    Par hebus44 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/08/2006, 22h20
  5. [C#] tri datagrid et incohérence avec la DataSource
    Par chasis.fan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2005, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo