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

jQuery Discussion :

Optimisation code Jquery


Sujet :

jQuery

  1. #1
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Optimisation code Jquery
    Bonjour le monde

    J'ai malheureusement perdu mon ancien compte bêtement....
    Je viens vers vous pas pour un problème, car mon code fonctionne mais plus pour voir avec vous comment optimiser mon compte.

    Mon cas : J'ai un formulaire dynamique, selon la sélectionne de certain champ j'en affiche de nouveau. Si l'utilisateur change de choix, je fais disparaître mes nouveaux champs.

    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
    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
    <div class="col-lg-6">
                <div class="form-group">
                    <label>Type de demande : </label>
     
                    <select name="type de demande" class="demande-info" >
                    	<option value="" selected="selected"></option>
                    	<optgroup label="General">
                    		<option value="4">Account / License</option>
                    		<option value="38">Feature request</option>
                    		<option value="37">Partnership</option>
                    		<option value="2">Pre-sale</option>
                    		<option value="3">Product information</option>
                    		<option value="1">Technical support</option>
                    	</optgroup>
                    </select>
     
                </div>
            </div>
     
            <div class="col-lg-6">
                <div class="form-group">
                    <label for="ct_product_id">Product :</label>                    
                    <select class="type-produit" id="ct_product_id">
                        <option></option>
                        <option value="1454">Produit 1</option>
                        <option value="1466">Produit 2</option>
                        <option value="1234">Produit 3</option>
                        <option value="1322">Produit 4.1</option>
                        <option value="1461">Produit 4.2</option>
                        <option value="1458">Produit 4.3</option>
                    </select>
                </div>
            </div>
     
            <div class="col-lg-6">
            	<div class="form-group" id="numberProduct">
                    <label for="ct_product_id">Number of product :</label>
    			    <select class="" id="ct_product_number">
    			      <option value="0">0</option>
    			      <option value="1">0 - 500</option>
    			      <option value="2">500 - 2 000</option>
    			      <option value="3">2 000 - 5 000</option>
    			      <option value="3">+ 10 000</option>
    			  	</select>
    			</div>
    		</div>
    		<div class="col-lg-6">
    			<div class="form-group" id="selectLetter">
                    <label for="ct_product_id">Select a letter :</label>
    			  	<select class="form-control input-lg" id="ct_letter">
    			      <option value="1"></option>
    			      <option value="2">aaa</option>
    			      <option value="3">bbb</option>
    			      <option value="3">ccc</option>
    			      <option value="3">ddd</option>
    			      <option value="3">eee</option>
    			      <option value="3">fff</option>
    			  	</select>
    			</div>
    		</div>

    Un peu de CSS pour masquer les champs que je ne souhaite pas voir au debut
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .contact-us #numberProduct{
        display: none;
        //opacity: 0;
    }
    .contact-us #selectLetter{
        display: none;
        //opacity: 0;
    }

    J'utilise donc du Jquery. J'ecoute mes 2 premiers champs "Type de demande" et "Produit".
    Si l'utilisateur selectionne "Pre-sale" "Product information" dans type de demande et un produit 4.dans "Product", j'affiche les autre champs.
    Si l'utilisateur désélectionne les précédent champs, j'annule l'affichage des autres champs

    Voilà mon Jquerry
    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
    (function ($) {
    		$(".demande-info").change(function(){
    		  var demande_info = $(".demande-info").val();
    		  var type_produit = $(".type-produit").val();
                     // Verification selon la valeur des champs
    		  if((demande_info == "3" || demande_info == "2") && (type_produit =="1322" || type_produit =="1461" || type_produit =="1458")){
    		    $("#numberProduct").fadeIn();
    		    $("#selectLetter").fadeIn();
    		  }else{
    		    $("#numberProduct").fadeOut();
    		    $("#selectLetter").fadeOut();
    		  }
    		});
    		$(".type-produit").change(function(){
    		  var demande_info = $(".demande-info").val();
    		  var type_produit = $(".type-produit").val();
                      // Verification selon la valeur des champs
    		  if((demande_info == "3" || demande_info == "2") && (type_produit =="1322" || type_produit =="1461" || type_produit =="1458")){
    		    $("#numberProduct").fadeIn();
    		    $("#selectLetter").fadeIn();
    		  }else{
    		    $("#numberProduct").fadeOut();
    		    $("#selectLetter").fadeOut();
     
    		  }
    		});
    Je duplique donc mon ecoute sur les 2 champs mais avec les vérifications qui vont avec :/
    Pas très optimisé donc.
    Avez-vous une idée de comment mieux faire, je bloque un peu.

    Merci à vous

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    C'est dans la doc ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function handler1() {
      alert( "handler1 Ok" );
    }
     
    $( "p" ).on( "click", handler1 );
    et si tu veux passer des arguments dans la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function myHandler( event ) {
      alert( event.data.foo );
    }
     
    $( "p" ).on( "click", { foo: "bar" }, myHandler );
    Remplaces "click" par "change" et ça fonctionnera pour ton cas. Tu peux aussi utiliser la version courte (sans passer par .on), c'est le même principe.

  3. #3
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Parfait, c'est nickel !

    Je ne connaissait pas.

    Jte remercie

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

Discussions similaires

  1. Optimisation code jQuery
    Par karimot dans le forum jQuery
    Réponses: 1
    Dernier message: 14/02/2014, 01h02
  2. Optimisation code jQuery
    Par iThinkWeb dans le forum jQuery
    Réponses: 3
    Dernier message: 24/11/2013, 09h19
  3. Optimisation code pour gagner en rapidité
    Par polodu84 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/03/2008, 15h32
  4. Réponses: 13
    Dernier message: 22/02/2008, 18h55
  5. Optimiser code VBA
    Par willytito dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/11/2007, 09h49

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