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 :

OnSubmit et bloquage de validation


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut OnSubmit et bloquage de validation
    Bonjour,

    j'ai un soucis avec mon javaScript.
    Code js : 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
     
    function controleBAT()
    		{
    			var rep = batteries.stockage.value;
    			var nb = batteries.nbBatteries.value;
    			var stock = batteries.stockageBatteries.value;
    			if ((nb < 0) || (nb >= 1000) || !IsNumeric(nb) || (rep="oui"))
    			{
    				alert("nombre de batteries erroné");
    				return false;
    			}
    			else if ((stock < 0) || (stock >= 10000) || !IsNumeric(stock) || (rep="oui"))
    			{
    				alert("capacité de stckage erroné");
    				return false;
    			}
    			else
    			{
    				if ((nb != "") || (nb > 0) || (nb <= 1000) || IsNumeric(nb) || (stock > 0) || (stock <= 10000) || IsNumeric(stock))
    				{
    				return true;
    				}
    			}
    		}

    que j'appelle avec ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <form name="batteries" method="post" action="fourniture.php" onSubmit="controleBAT();">
    	<table>
    	<p>
    	L'installation est-elle équipée d'un dispositif de stockage de l'énergie par batteries ?
    	</p>
    	<input type="radio" name="stockage" value="oui"/>Oui<input type="radio" name="stockage" value="non"/>Non<br/>
    	Nombre de batteries : <input type="text" name="nbBatteries"/><br/>
    	Capacité totale de stockage (en kWH) : <input type="text" name="stockageBatteries"/><br/>
    	<p>
    	Si votre installation comporte une ou plusieurs batteries, joignez le schéma de l'installation.
    	</p>
    	</table>
    	<input type="submit" name="valider" value="OK" /><input type="reset" value = "Annuler"/><br/>
    </form>

    Le problème étant que si je choisis "Non" dans la variable stockage (qui signifie qu'il n'y a pas de batteries), au moment de la validation, JS va m'afficher le message "Erreur, nombre de batteries incorrectes".
    Or, comme je n'en ai pas, le message ne devrait pas apparaître.
    Ensuite, il valide tout de même le script et passe à la page suivante.

    Voyez vous ou j'ai pu faire une erreur ?
    Merci !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 210
    Par défaut
    Bonjour,
    plusieurs erreurs,
    - dans la fonction il vaut mieux récupérer la référence à la FORM plutôt que de l'appeler en direct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var oForm = document.forms['batteries'];
    on utilisera ensuite oForm pour accéder aux différents éléments

    - pourquoi surcharger avec une fonction isNumeric alors que l'on a à disposition isNaN

    - l'écriture de (rep="oui") est une affectation et non une comparaison, donc sera toujours oui et ça passe
    une ligne comme celle ci devrait faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ((nb < 0) || (nb >= 1000) || isNaN(nb) || (rep == "oui")) {
    - une petite dernière, pour qu'il n'y ait pas soumission du formulaire il faut utiliser la valeur de retour de la fonction false/true, ce que tu ne fait pas, donc mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="batteries" method="post" action="fourniture.php" onsubmit="return controleBAT();">

Discussions similaires

  1. [XL-2007] Liste de validation bloquage
    Par rogerlette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/04/2011, 15h10
  2. onsubmit qui valide toujours un formulaire
    Par DJ Caësar 9114 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2009, 21h00
  3. differencier onsubmit() et une validation sur le bouton
    Par nocoment dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/05/2007, 16h15
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

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