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 :

empêcher l'envoi d'un formulaire


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut empêcher l'envoi d'un formulaire
    Bonjour,

    Voila je voudrais effectuer une vérification sur un formulaire avant de l'envoyer.

    En fait je voudrais que si l'un des champs est vide on ne l'envoie pas. On ne doit pas l'envoyer non plus si le champ nommé "position" contient autre chose que des chiffres.

    J'ai fait 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function validateForm()
    {
    	var errorsInForm = 0;
    	var i;
    	var emptyTest = /^\s*$/;
    	var intTest = /^[0-9][0-9]?$/;
     
    	//for each element in the form, if one is empty we increment the variable emptyElements
    	for (i = 0; i < document.addAppTypeForm.length; i++)
    	{
    		if (emptyTest.exec(document.addAppTypeForm.element[i].value) == null)
    		{
    			errorsInForm++;
    		}
     
    		if (document.addAppTypeForm.element[i] == document.addAppTypeForm.position)
    		{
    			if (intTest.exec(document.addAppTypeForm.position) == null)
    			{
    				errorsInForm++;
    			}
    		}
    	}
     
    	//if we have any error we return false
    	if (errorsInForm != 0)
    	{
    		alert("You didn't submit valid informations. Please retry.");
    		return false;
    	}
    	//else we return true
    	else
    	{
    		return true;
    	}
    }
    Et l'appel de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="mapage.php" onsubmit="return validateForm();" >
    Le formulaire est tout le temps envoyé et je ne vois pas pourquoi.

    Voyez vous d'où peut venir le problème ?

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    Je viens de découvrir que la boucle for ne parcourait que l'élément zero du formulaire (alors que document.addAppTypeForm.length vaut 4)

    Mais je ne comprends pas pourquoi car je n'ai rien qui stoppe la boucle durant son exécution ...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Que contient le formulaire?
    As tu mis une alert() en début de boucle for pour visualiser le i et le document.addAppTypeForm.length?

    A+

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    oui justement c'est comme ca que j'ai découvert que la boucle ne faisait qu'un tour.

    une alerte sur document.addAppTypeForm.length me renvoyait 4 (pour le formulaire avec lequel j'ai testé) et une alerte sur i en 1ère commande de la boucle m'a retourné une seule alerte avec zéro comme valeur.


    La boucle devrait fonctionner car j'en avais déjà fait une similaire qui fonctionnait très bien
    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
    function enable_disable() {
    	var elementsVides = 0;
    	var i;
     
    	//pour chaque element du formulaire, si l'un est vide on le compte
    	for (i = 0; i < document.forms[0].length; i++)
    	{
    		if (document.forms[0].elements[i] != document.formulaire.maint)
    		{
    			if (document.forms[0].elements[i].value == "" || document.forms[0].elements[i].value == null)
    			{
    				elementsVides++;
    			}
    		}
    	}
     
    	//si il y a des elements vides on desactive le bouton, sinon on l'active
    	document.getElementById("boutonValider").disabled=(elementsVides > 0)?true:false;
    }
    J'ai juste ajouté une vérification dans la boucle et changé l'instruction de la fin, rien de méchant mais apparemment ça a suffit à faire que ma fonction ne marche pas ...

  5. #5
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(/^\s*$/.exec(''))
    Ne renvoie pas null
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Par défaut
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(intTest.exec(document.addAppTypeForm.position.value));
    me renvoie bien null si le test échoue (et la valeur du champ si le test réussit)

    Par contre en effet un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(emptyTest.exec(document.addAppTypeForm.elements[1].value));
    n'affiche rien dans la boite de dialogue

    Egalement j'ai remplacé element[i] par elements[i]

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

Discussions similaires

  1. Envoie d'un formulaire lors d'un click dans une listBox
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/10/2005, 17h34
  2. Empêcher la réduction d'un formulaire
    Par soso78 dans le forum Access
    Réponses: 3
    Dernier message: 07/10/2005, 17h59
  3. [SOAP] envoi d'un formulaire
    Par sanchou dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 04/08/2005, 15h15
  4. Réponses: 3
    Dernier message: 27/11/2004, 16h23
  5. [struts ] pb avec l'envoie d'un formulaire
    Par njac dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/06/2004, 14h29

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