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 avec trois fonctions


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Par défaut onsubmit avec trois fonctions
    Bonjour,

    J'ai un soucis javascript. J'ai créé un tableau html avec des champs de texte dans chaque cellule (tableau généré en js à l'aide de deux champs de texte un pour les colonnes l'autre pour les lignes).
    Dans ce tableau le header contient les quantités (produits) la colonne de gauche les valeurs (type de produit). Le reste sont les champs de texte correspondant au prix (q/valeur).
    J'arrive à créer sans soucis ce tableau.

    le problème se pose lors du fameux onsubmit. J'ai trois fonctions de contrôle de champs, une pour chaque type (quantité,valeur,prix).

    Lorsque je mets les trois fonctions ensembles, cela me créer "une fin du monde" la soumission ne marche que pour une partie (ex:seulement la quantité) voire deux mais pas trois
    Ce que je voudrais c'est si un champs de n'importe quelle partie n"est pas rempli la soumission soit avortée, bien sûr si un ou plusieurs champs des trois ne sont pas remplis la soumission ne pas non plus.


    Voici les fonctions de contrôle :


    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function verifQ()
    { 
    	var c =document.getElementById("col").value;	
    	for(var i=2;i<=c;i++)
    	{
     
    		if (document.getElementById("Q"+i).value=="")
    		{
    			 return false;
    		}		
    	}
     
    }
     
     
    function vP()
    {
    	var col =parseInt(document.getElementById("col").value);
    	var ligne =parseInt(document.getElementById("ligne").value);
    	var cell=(col*ligne);
    	var d = (col+2);
    	var z=0; 
    	for(var t=d;t<=cell;t++)
    	{
    		z++;			
     
    		if(z%(col)==0)
    		{
    			z=0;t=t+1;	
    		}
    		if(document.getElementById("P"+t).value=="")
    		{
    			alert(2);
    			return false; 				
    		}
    	}				
    }
     
    function verV()
    {
    	var lig =parseInt(document.getElementById("ligne").value);
    	for(var n=1;n<=lig;n++)
    	{
    		if(document.getElementById("V"+n).value=="")
    		{
    			alert(1);
    			return false;
    			break;
    		}
     
    	}
     
    }

    voici le formulaire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="attributes" action="<?php echo tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=' . $form_action . '&option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page); ?>" method="post" onsubmit="return(verifQ() && verV() && vP());">


    J'ai essayé de bien résumer, dites moi si ce n'est pas clair.

    PS: ne critiquez pas trop le code je débute dans la profession, sinon je vais débuter dans la dépression

  2. #2
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Pourquoi ne pas tout faire en une seule et même fonction de vérification ?

    Sinon c'est bien de faire le return false quand c'est pas bon, mais:
    1/ un return fait quitter la fonction
    2/ faut pas oublier le return true quand c'est bon

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function verifQ()
    { 
    	var c =document.getElementById("col").value;	
            var ok=0
    	for(var i=2;i<=c;i++)
    	{
    		if (document.getElementById("Q"+i).value=="")
    		{
    		  ok++;
    		}		
    	}
            return (ok==0);
     
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Par défaut
    J'ai tenté en une fonction que 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    function verif()
    { 
    	var ok=0;
    	var c =document.getElementById("col").value;	
    	for(var i=2;i<=c;i++)
    	{
     
    		if (document.getElementById("Q"+i).value=="")
    		{
    			 ok++;
     
    		}		
    	}
     
     
    	var col =parseInt(document.getElementById("col").value);
    	var ligne =parseInt(document.getElementById("ligne").value);
    	var cell=(col*ligne);
    	var d = (col+2);
    	var a=0; 
     
     
    	for(var t=d;t<=cell;t++)
    	{
    		a++;			
     
    		if(a%(col)==0)
    		{
    			a=0;
    			t=t+1;	
    		}
    		if(document.getElementById("P"+t).value=="")
    		{
    			alert(document.getElementById("P"+t).name); 
    			ok++;
     
    		}
    	}
     
    	var ok2=0;
    	var lig =parseInt(document.getElementById("ligne").value);
     
    	for(var n=1;n<=lig;n++)
    	{
    		alert(1);
    		if(document.getElementById("V"+n).value=="")
    		{
    			ok++;
     
     
     
    		}
     
    	}	
     
    	return(ok==0);	
     
    }
    Cela ne marche absolument pas, lors du click la deuxième boucle fait le tour de tous ses champs vides jusqu'à valider le formulaire , la troisième boucle quant à elle ne s'enclenche pas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Par défaut
    Bon je viens de changer une partie du code

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    function verif()
    { 
    	var ok=0;
    	var col =parseInt(document.getElementById("col").value);
    	var ligne =parseInt(document.getElementById("ligne").value);
    	var cell=(col*ligne);
    	var d = (col+2);
    	var a=0; 
     
    	for(var i=2;i<=col;i++)
    	{
     
    		if (document.getElementById("Q"+i).value=="")
    		{
    			 ok=ok+1; alert(3);
    			 break;
    		}		
    	}
     
    	for(var t=d;t<=cell;t++)
    	{
    		a++;			
     
    		if(a%(col)==0)
    		{
    			a=0;
    			t=t+1;	
    		}
    		if(document.getElementById("P"+t).value=="")
    		{
    			//	alert(document.getElementById("P"+t).name);  
    			ok=ok+1; alert(2);
    			break;				
    		}
    	}
     
     
    	for(var n=1;n<=ligne;n++)
    	{
     
    		if(document.getElementById("V"+n).value=="")
    		{
    			ok=ok+1;alert(1);
    			break;						
    		}
     
    	}	
     
    	if(ok==0)
    	{
    		return true;
     
    	}
    	else
    	{
    		return false;	
     
    	}
     
    }
    Toutes les boucles fonctionnent, déjà ça mais le formulaire se valide s'il n'y a pas de champs vide dans la première et troisième boucle alors que la deuxième boucle fait ok=ok+1; Le pire si je mets return false dans le if et dans le else le formulaire est quand même envoyé dans le cas prédemment expliqué.

    Merci de m'aider ça me saoule.

    Ps: dsl pour les admins je connaissais pas la balise code, je sais c'est chiant un n00b.

  5. #5
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Vous avez toujours bien le return dans le submit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onsubmit="return verif();">

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Par défaut
    Citation Envoyé par vermine Voir le message
    Bonjour,

    Vous avez toujours bien le return dans le submit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onsubmit="return verif();">
    Oui

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

Discussions similaires

  1. onsubmit avec 2 fonctions
    Par jowelle dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 23/11/2011, 14h33
  2. onSubmit avec 2 fonctions JS
    Par reitsab dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 07/10/2011, 10h52
  3. Réponses: 2
    Dernier message: 21/04/2007, 20h24
  4. Problème avec le OnSubmit et ma fonction
    Par CYFL dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 29/03/2006, 14h43
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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