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 :

submit / validation de formulaire


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 16
    Points
    16
    Par défaut submit / validation de formulaire
    Bonjour,

    J'ai un soucis de validation de formulaire.
    Ce que je veux faire est ultra simple : valider un formulaire HTML via une fonction javascript.

    Je cherches depuis des jours sur différents forums et je ne trouve pas pourquoi mon formulaire est validé (le produit est ajouté au panier) mais pas validé par la fonction javascript.

    La ou les choses se corsent c'est que la validation javascript fonctionne sous IE 8 lorsque l'on change la quantité voulue (si on la change pas et que l'on laisse par défaut -1 -> pas de vérification), mais pas sous IE 10 ou Firefox.
    J'en perds mon latin ...

    J'ai épuré le code, le voici :
    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
    function fiche_controle_conditionnement(frm, conditionnement) {
    	alert("Controle conditionnement en cours");
    	// Verifie que le client ne commande qu'un nombre ENTIER de produits
    	var regex = new RegExp ("^[0-9]+$");
    	if(!regex.test(frm.elements['qty'].value)) {
    		alert("Quantit\u00E9 invalide.");
    		return false;
    	}
     
    	alert(conditionnement);
    	// verifier si la quantit? est un multiple du conditionnement
    	// On divise la quantit? par le conditionnement
    	nombre = parseInt(frm.elements['qty'].value) / parseInt(conditionnement);
    	alert(frm.elements['qty'].value);
    	if (parseInt(nombre) != nombre) {
    		// Si le resultat n'est pas un entier on retourne false (pas d'envoi du formulaire)
    		alert("Produit vendu par conditionnement de "+conditionnement+".\n\nVous devez sp\u00E9cifier une quantit\u00E9 correspondant \u00E0 un multiple de "+conditionnement+".");
    		return false;
    	} else {
    		return true; //Si le resultat est un entier on continue et on valide le formulaire
    	}
    }
    Code html : 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
    <form id="buy_block" onsubmit="return fiche_controle_conditionnement(this,12)" method="post" action="../cart.php">
    	<p class="price">
    		<br>
    		<span class="our_price_display">
    		<span id="our_price_display">1,02 €</span>
    		TTC
    		</span>
    		<br>
    	</p>
    	<p id="quantity_wanted_p">
    		<label>Quantité :</label>
    		<input id="quantity_wanted" class="text" type="text" maxlength="3" size="2" value="1" name="qty">
    	</p>
    	<p id="add_to_cart" class="buttons_bottom_block">
    		<input class="exclusive" type="submit" value="Ajouter au panier" name="Submit">
    	</p>
    </form>

    Si vos yeux experts y trouvait quelque chose de faux ca m'arrangerai, car depuis le temps que je suis dessus, je tourne en rond.

    Merci par avance.

  2. #2
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    ce sont les "parseInt", il faut leur rajouter l'attribut 10. Sinon, ça convertit en octet et non en décimal.

    C'est à dire "parseInt(maValeur, 10)"

  3. #3
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    Autre remarque, pour vérifier qu'un nombre est un multiple d'un autre, le plus simple est d'utiliser la fonction modulo (c'est à dire %).

    Ce qui donne :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // verifier si la quantit? est un multiple du conditionnement
    	if (parseInt(frm.elements['qty'].value, 10) % conditionnement != 0) {
    		// Si le resultat n'est pas 0 on retourne false (pas d'envoi du formulaire)
    		alert("Produit vendu par conditionnement de "+conditionnement+".\n\nVous devez sp\u00E9cifier une quantit\u00E9 correspondant \u00E0 un multiple de "+conditionnement+".");
    		return false;
    	} else {
    		return true; //Si le resultat est un entier on continue et on valide le formulaire
    	}

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci je vais tester ceci.

    Ca pourrait en effet résoudre le problème quand à certaines quantités qui ne sont pas bloquées.

    Par contre ca n'explique pas pourquoi la fonction javascript n'est pas appelé dans certains navigateurs lors de la soumission du formulaire.

    (le premier alert() permet de voir si on rentre bien dans la fonction de contrôle et il n'est pas interprété).

  5. #5
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    Je n'ai pas rencontré de problème pour le submit, que ce soit sous FF 17 ou IE 8. Je n'ai pas d'autres navigateurs pour tester donc je ne pourrais pas t'aider de ce côté là.

Discussions similaires

  1. [PHP 5.2] Curl: Valider un formulaire avec un submit en javascript
    Par altecad dans le forum Langage
    Réponses: 1
    Dernier message: 08/08/2011, 17h18
  2. Valider le boutton submit d'un formulaire via URL
    Par kdson dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 23/01/2008, 14h20
  3. valider un formulaire sans submit
    Par mimagyc dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2007, 23h08
  4. Réponses: 4
    Dernier message: 28/11/2006, 13h55
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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