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 :

Un select Box avec plein de Options


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut Un select Box avec plein de Options
    bonjour,
    j'ai un SelectBox que je remplie avec des users d'une base de donnees.
    Le box contient 5000 entrées.
    Donc dans mon HTML jai 3 select box chacun rempli de 5000 users, car je fais des recherches sur la base de données pour trois champs( Contact User, First Created By, Entry Created By ).
    Sous Firefox et Chrome, j'ai pas de probleme de performance. mais sur IE6 ca prend vraiment du temps pour faire le rendering des selectBoxes.
    J'ai demande au Boss de faire un autocomplete Widget au lieu du selectBox, il refuse pour des raisons de consistance du UI.
    Si vous avec une idee comment optimiser ce probleme de performance sous IE6, je suis preneur.
    Voila la methode que j'utilise pour dessiner les selectBoxes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function createComboBox( list, targetId, selectorHead ){
        var comboBox = selectorHead;
        for( var i = 0; i < list.length ; i++ ) {
            comboBox += '<option value="' + list[i].index + '">' + list[i].optionText + '</option>\n';
        }
        comboBox += '</select>';
        $(targetId).html( comboBox );
    };

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bonjour,

    je vous suggère très fortement de lire ce billet de blog qui explique très bien ce que l'on peut se permettre et non avec jQuery et surtout avec les append :

    (EN) http://www.learningjquery.com/2009/0...pend-correctly

    Mais ce qu'il faut en retenir c'est que le temps d'exécution peut être divisé par 6 sur IE6 en utilisant la méthode suivante !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function createComboBox( list, targetId, selectorHead ){
        var comboBox = selectorHead,
            options = [], i;
     
        for(i = 0; i < list.length ; i++ ) {
            options[i++] = '<option value="' + list[i].index + '">' + list[i].optionText + '</option>\n';
        }
        $(targetId).append(options.join(''));
    };
    De plus, si targetId correspond à l'ID du select, il n'y a plus besoin de rajouter le </select> final.

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    merci arnaud je vais lire le liens, et je vais tester la methode que tu me suggere.

    ps: le targetId dans mon cas cest un div

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Dans ce cas il faut rajouter la création du select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function createComboBox( list, targetId, selectorHead ){
        var comboBox = selectorHead,
            select = [], i = 0;
     
        select[i++] = '<select>';
        for(; i < list.length ; i++ ) {
            select[i++] = '<option value="' + list[i].index + '">' + list[i].optionText + '</option>\n';
        }
        select[i++] = '</select>';
     
        $(targetId).append(select.join(''));
    };
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    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
    juste si tu as besoin d'utiliser le name du select ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var sel=document.createElement('<select name="mysel">')
    myopt=''
    for (i=0;i<5000;i++){
      myopt+='<option value="'+i+'">'+i+'</option>';
     }
    $(sel).append(myopt)
    $('#foo').append(sel)
    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 !

  6. #6
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    merci Arnaud et SpaceFrog, ca ma beacoup aider.

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

Discussions similaires

  1. Emulateur de select avec onmouseover sur option
    Par Lady dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/08/2012, 11h54
  2. Select avec bcp d'option = chargement trop long
    Par gato18 dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2012, 10h27
  3. Ouvrir une lightbox avec une select box
    Par amans dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2010, 08h07
  4. Réponses: 3
    Dernier message: 08/06/2010, 14h42
  5. select box avec javascript
    Par flamant dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/09/2008, 11h53

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