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 :

Optimisation d'un script checkbox


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 7
    Par d�faut Optimisation d'un script checkbox
    Bonjour a tous !

    Je me permet de venir ici pour vous pr�sent� mon 1er script
    Bon je vous l'accorde il est franchement simplet et je suis sur et certain qu'il y � d'autre moyen d'�crire ce script pour l'optimis�.

    Ceci �tant dit je ne sais pas faire et pour �tre clair avec vous je cherche de l'aide pour que vous puissiez faire une critique CONSTRUCTIVE sur mon travail accomplie
    (SVP pas de Ho le noob, ou cherche google et ton amis ect comme j'ai d�j� eu sur d'autre forum pour le m�me sujet)

    Voici le script en question je m'explique apr�s :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <!-- Debut
     
    function checkCheckBox(formulaire)
    {
    	hardware = formulaire.hardware.checked;
    	software = formulaire.software.checked;
    	x32 = formulaire.x32.checked;
    	x64 = formulaire.x64.checked;
     
    	//si tout et vide on retourne l'erreur !
    	if ( hardware + software + x32 + x64 == false )
        {
        	alert('Vous devez choisir entre la catégorie Hardware ou Software et la catégorie Système x32 ou x64 bits pour cette solution.');
        	return false;
        }
     
    	//si tout et cocher on retourne l'erreur !
      	else if (hardware == true && software == true && x32 == true && x64 == true )
        {
    		alert('Vous avez choisi de déclarer cette solution dans la catégorie Hardware et Software ainsi que dans la catégorie Système x32 et x64 bits vous ne pouvez pas faire cela, veuillez faire un choix entre une des deux propositions de chaques catégories.');
    		return false;
    	}
     
    	//si hardware et software sont correctement coché mais que ce n'est pas le cas du système 32 et 64 on retourne l'erreur !
     	else if (hardware == true && software == false && x32 == false && x64 == false)
        {
    		alert('Vous n\'avez pas choisi si cette solution est valable pour un Système x32 ou x64 bits, veuillez faire votre choix.');
    		return false;
    	}
     
    	else if (hardware == false && software == true && x32 == false && x64 == false)
    	{
    		alert('Vous n\'avez pas choisi si cette solution est valable pour un Système x32 ou x64 bits, veuillez faire votre choix.');
    		return false;
    	}
     
    	else if (hardware == true && software == false && x32 == true && x64 == true)
    	{
    		alert('Vous ne pouvez pas classé cette solution dans la catégorie Système x32 et x64 bits, veuillez faire votre choix.');
    		return false;
    	}
     
    	else if (hardware == false && software == true && x32 == true && x64 == true)
    	{
    		alert('Vous ne pouvez pas classé cette solution dans la catégorie Système x32 et x64 bits, veuillez faire votre choix.');
    		return false;
    	}
     
    	//si la catégorie système x32 et x64 bits et correctement coché mais que ce n'est pas le cas 
    	//pour hardware et software on retourne l'erreur !
     	else if (hardware == false && software == false && x32 == true && x64 == false)
        {
    		alert('Vous n\'avez pas choisi si cette solution est une solution Hardware ou Software, veuillez faire votre choix.');
    		return false;
    	}
     
    	else if (hardware == false && software == false && x32 == false && x64 == true)
    	{
    		alert('Vous n\'avez pas choisi si cette solution est une solution Hardware ou Software, veuillez faire votre choix.');
    		return false;		
    	}
     
    	else if (hardware == true && software == true && x32 == true && x64 == false)
    	{
    		alert('Vous ne pouvez pas classé cette solution dans la catégorie Hardware et Software, veuillez faire votre choix');
    		return false;		
    	}
     
    	else if (hardware == true && software == true && x32 == false && x64 == true)
    	{
    		alert('Vous ne pouvez pas classé cette solution dans la catégorie Hardware et Software, veuillez faire votre choix');
    		return false;		
    	}	
     
    	//si on coche soft et hard et que l'on coche pas x32 ou x64 on retourne l'erreur (sa va dans les deux sens)!
     	else if (hardware == false && software == false && x32 == true && x64 ==true)
        {
    		alert('Vous ne pouvez pas choisir de classé cette solution dans la catégorie x32 et x64 bits et de ne pas choisir si c\est une solution Hardware ou Software, veuillez faire votre choix.');
    		return false;
    	}
     
     	else if (hardware == true && software == true && x32 == false && x64 == false)
        {
    		alert('Vous ne pouvez pas choisir de classé cette solution dans la catégorie Hardware et Software et de ne pas choisir de Système x32 ou x64 bits, veuillez faire votre choix. ');
    		return false;
    	}
     
    	//si tout et ok on valid ouf !!!
    	else 
    	{
    		alert('c\'est bon on continue.');
     
    	}
    		return true;
    }
    Vous le devin� surement, j'ai 4 checkbox, Hardware, Software, x32 et syst�me x64 bits.

    Je cherche � ce qu'il y ai seulement la possibilit� de valid� le formulaire si un choix et fait entre Hardware et Software et un autre choix entre x32 et x64 bits.
    Si une erreur et faite par l'utilisateur alors je lui explique pourquoi et de quoi il s'agit, peut �tre qu'il a cocher Hardware et Software par exemple !

    Voil� d�o� ce script avec beaucoup de condition et de possibilit� au niveau des mauvais choix saisie par l'utilisateur.

    J'esp�re que vous allez pouvoir m'aider, merci d'avance a ceux qui y r�pondrons.

    Ps : si il manque des infos ou que je ne suis pas assez clair dans mes explications n'h�siter pas a me le dire

  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
    un petit switch peut etre ?
    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
    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 : 55
    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
    D�j�, vu que chaque if entraine un return, aucun de tes else n'est utile.
    Ensuite, il semblerait que tu puisses regrouper certaines conditions qui affichent le m�me message.
    D'autre part, une condition comme
    peut aussi bien s'�crire
    de m�me,
    peut s'�crire
    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

  4. #4
    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
    sison il existe une technique � base de sommes de puissances de deux.

    Attribue � chaque checkbox une valeur de puissance de deux.
    Chaque combinaison de check coch�es donnera un resulat de somme diff�rent
    Il ne te restera plus qu'a comparer les sommes avec les resultats attendus,
    voir peut �tre m�me avoir un array avec les message d'alert index� en fonction des sommes ...
    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 !

  5. #5
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par d�faut
    Citation Envoy� par SpaceFrog Voir le message
    sison il existe une technique � base de sommes de puissances de deux.
    Par contre �a ne donne pas du code intuitif � lire...

    Sinon, si tu veux vraiment am�liorer ton code, commence d�j� par utiliser les bons �l�ments HTML.

    Hardware et Software sont li�s � une m�me cat�gorie et sont exclusif => utiliser un radio bouton avec le m�me "name".
    De m�me pour x32 et x64.

    Comme �a t'as 7 tests qui virent :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    hardware == true && software == true && x32 == true && x64 == true
    hardware == true && software == false && x32 == true && x64 == true
    hardware == false && software == true && x32 == true && x64 == true
    hardware == true && software == true && x32 == true && x64 == false
    hardware == true && software == true && x32 == false && x64 == true
    hardware == false && software == false && x32 == true && x64 ==true
    hardware == true && software == true && x32 == false && x64 == false
    Tu peux en plus renseigner une valeur par d�faut => encore 6 tests en moins
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    hardware + software + x32 + x64 == false
    hardware == true && software == false && x32 == false && x64 == false
    hardware == false && software == true && x32 == false && x64 == false
    hardware == false && software == false && x32 == true && x64 == false
    hardware == false && software == false && x32 == false && x64 == true
    hardware == false && software == false && x32 == true && x64 ==true
    Et voil� \o/
    Rien qu'avec du HTML t'as plus aucun test � faire.

    Ceci dit tu peux grandement am�liorer ton script m�me sans �a, en appliquant ceci :
    • D�clarer les variables avec var : var hardware = formulaire.hardware.checked;.
    • Utiliser les op�rateurs ad�quats : hardware + software + x32 + x64 => hardware || software || x32 || x64.
    • Supprimer les conditions inutiles :
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      if (hardware == true && software == false && x32 == false && x64 == false) {
        // operation 1
      } else if (hardware == false && software == true && x32 == false && x64 == false) {
        // operation 1
      }
      =>
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      if (hardware == false && software == true) {
        // operation 1
      }
    • Ne pas faire de test d'�galit� dans le cas de valeurs bool�ennes, comme l'a dit Bovino
    • Indenter correctement le code (tout avec des tabulations ou tout avec des espaces, mais pas un m�lange des deux).


    En combinant tout �a (sans tenir compte du fait que c'est totalement inutile vu qu'avec du HTML tu peux le faire de base), on arrive � un code comme �a :
    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
    function checkCheckBox(formulaire) {
    	var hardware = formulaire.hardware.checked;
    	var software = formulaire.software.checked;
    	var x32 = formulaire.x32.checked;
    	var x64 = formulaire.x64.checked;
     
    	var valid = false;
     
    	if (!hardware && !software && !x32 && !x64) {
    		//si tout et vide on retourne l'erreur !
    		alert('Vous devez choisir entre la catégorie Hardware ou Software et la catégorie Système x32 ou x64 bits pour cette solution.');
    	} else if (hardware && software && x32 && x64) {
    		//si tout et cocher on retourne l'erreur !
    		alert('Vous avez choisi de déclarer cette solution dans la catégorie Hardware et Software ainsi que dans la catégorie Système x32 et x64 bits vous ne pouvez pas faire cela, veuillez faire un choix entre une des deux propositions de chaques catégories.');
    	} else if (!x32 && !x64) {
    		if (hardware && software) {
    			//si on coche soft et hard et que l'on coche pas x32 ou x64 on retourne l'erreur (sa va dans les deux sens)!
    			alert('Vous ne pouvez pas choisir de classé cette solution dans la catégorie Hardware et Software et de ne pas choisir de Système x32 ou x64 bits, veuillez faire votre choix. ');
    		} else {
    			//si hardware et software sont correctement coché mais que ce n'est pas le cas du système 32 et 64 on retourne l'erreur !
    			alert('Vous n\'avez pas choisi si cette solution est valable pour un Système x32 ou x64 bits, veuillez faire votre choix.');
    		}
    	} else if (x32 && x64) {
    		if (!hardware && !software) {
    			alert('Vous ne pouvez pas choisir de classé cette solution dans la catégorie x32 et x64 bits et de ne pas choisir si c\est une solution Hardware ou Software, veuillez faire votre choix.');
    		} else {
    			alert('Vous ne pouvez pas classé cette solution dans la catégorie Système x32 et x64 bits, veuillez faire votre choix.');
    		}
    	} else if (!hardware && !software) {
    		//si la catégorie système x32 et x64 bits et correctement coché mais que ce n'est pas le cas 
    		//pour hardware et software on retourne l'erreur !
    		alert('Vous n\'avez pas choisi si cette solution est une solution Hardware ou Software, veuillez faire votre choix.');
    	} else if (hardware && software) {
    		alert('Vous ne pouvez pas classé cette solution dans la catégorie Hardware et Software, veuillez faire votre choix');
    	} else {
    		//si tout et ok on valid ouf !!!
    		alert('c\'est bon on continue.');
    		valid = true;
    	}
     
    	return valid;
    }
    Et �a peut encore se simplifier en :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function checkCheckBoxV2(formulaire) {
    	var hardware = formulaire.hardware.checked;
    	var software = formulaire.software.checked;
    	var x32 = formulaire.x32.checked;
    	var x64 = formulaire.x64.checked;
     
    	var valid = hardware ^ software && x32 ^ x64;
    	if (!valid) {
    		alert('Vous devez cocher exactement une catégorie hardware/software et une catégorie x32/x64');
    	}
     
    	return valid;
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Ao�t 2009
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2009
    Messages : 7
    Par d�faut
    Ok j'ai effectivement fait pas mal d'erreur, oublier des choses et autres
    Que dire sinon merci de m'avoir �clair� sur ce sujet, maintenant je vais m'atteler a faire les modifs sur ce script pour qu'il soit effectivement plus court mais aussi plus performant.

    Vraiment merci a vous 3 je clos le sujet avec [r�solu] devant son titre

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. optimisation d'un script d'inscription en PHP.
    Par JeanJean75 dans le forum Langage
    R�ponses: 20
    Dernier message: 24/12/2009, 01h25
  2. Execution/optimisation d'un script php ultra long
    Par Skar dans le forum Langage
    R�ponses: 2
    Dernier message: 11/06/2009, 17h23
  3. [MySQL] Besoin d'aide pour optimisation d'un script tr�s lourd
    Par macadamgrafik dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 25/02/2009, 16h08
  4. Optimisation d'un script d'analyse
    Par azerwhite dans le forum EDI, CMS, Outils, Scripts et API
    R�ponses: 6
    Dernier message: 21/10/2008, 09h48
  5. R�ponses: 6
    Dernier message: 23/01/2007, 17h20

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