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 :

Avec un input de type checkbox, mon script de tri ne fonctionne plus


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Par défaut Avec un input de type checkbox, mon script de tri ne fonctionne plus
    Bonjour,
    j'utilise un tableau triable grace à ce script:
    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
     
    /*
     * Script qui permet de trier un tableau
     */
     
     
    var table=function(){
        function sorter(n){
            this.n=n;
            this.t;
            this.b;
            this.r;
            this.d;
            this.p;
            this.w;
            this.a=[];
            this.l=0
        }
        sorter.prototype.init=function(t,f){
            this.t=document.getElementById(t);
            this.b=this.t.getElementsByTagName('tbody')[0];
            this.r=this.b.rows;
            var l=this.r.length;
            for(var i=0;i<l;i++){
                if(i==0){
                    var c=this.r[i].cells;
                    this.w=c.length;
                    for(var x=0;x<this.w;x++){
                        if(c[x].className!='nosort'){
                            c[x].className='head';
                            c[x].onclick=new Function(this.n+'.work(this.cellIndex)')
                        }
                    }
                }else{
                    this.a[i-1]={};
                    this.l++;
                }
            }
            if(f!=null){
                var a=new Function(this.n+'.work('+f+')');
                a()
            }
        }
        sorter.prototype.work=function(y){
            this.b=this.t.getElementsByTagName('tbody')[0];
            this.r=this.b.rows;
            var x=this.r[0].cells[y],i;
            for(i=0;i<this.l;i++){
                this.a[i].o=i+1;
                var v=this.r[i+1].cells[y].firstChild;
                this.a[i].value=(v!=null)?v.nodeValue:''
            }
            for(i=0;i<this.w;i++){
                var c=this.r[0].cells[i];
                if(c.className!='nosort'){
                    c.className='head'
                }
            }
            if(this.p==y){
                this.a.reverse();
                x.className=(this.d)?'asc':'desc';
                this.d=(this.d)?false:true
            }else{
                this.p=y;
                this.a.sort(compare);
                x.className='asc';
                this.d=false
            }
            var n=document.createElement('tbody');
            n.appendChild(this.r[0]);
            for(i=0;i<this.l;i++){
                var r=this.r[this.a[i].o-1].cloneNode(true);
                n.appendChild(r);
                r.className=(i%2==0)?'even':'odd'
            }
            this.t.replaceChild(n,this.b)
        }
        function compare(f,c){
            f=f.value,c=c.value;
            var i=parseFloat(f.replace(/(\$|\,)/g,'')),n=parseFloat(c.replace(/(\$|\,)/g,''));
            if(!isNaN(i)&&!isNaN(n)){
                f=i,c=n
            }
            return (f>c?1:(f<c?-1:0))
        }
        return{
            sorter:sorter
        }
    }();
    le trier ascendant/descendant s'effectue correctement.
    cependant lorsque je rajoute un champs input de type checkbox la colonne en question ne se trie plus correctement.
    comment faire pour y remédier?

  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
    il trie le contenu des cellules ... dons le code html ...

    il faudrait rajouter dans le code la supression des balises html avec la regExp afin qu'il ne trie que sur le contenu texte
    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 éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Par défaut
    bonjour,
    merci pour ta réponse j'ai essayé ce-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var i=parseFloat(f.replace(/(\$|\<[^>]*>,)/g,'')),
    cela ne fonctionne pas est ce que c'est parce que je l'ai mal écrit?

    ps:désolé pour le titre que j'avais mis lors de la création de la discussion je n'avais pas fait attention.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var i=parseFloat(f.replace(/<[^>]*>/g,''))
    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 éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 245
    Par défaut
    le souci avec ce code c'est que le trie se fonctionne plus sur les autres colonnes et sur celle ou j'ai ma checkbox ne fonctionne toujours pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input type="checkbox" name="CHK_EXP_<?php echo $cont->id; ?>" id="CHK_EXP_<?php echo $cont->id; ?>" value="<?php echo $cont->id; ?>" onclick="SelUnSelColonne(this, '<?php echo $produit; ?>');" CHECKED/>

  6. #6
    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
    tu as testé ce que retournait i (avec un alert ?)
    remplace par 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 !

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

Discussions similaires

  1. Comment rendre un input de type checkbox non modifiable
    Par beeboo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/08/2008, 13h54
  2. Parcourir les input de type checkbox d'un formulaire
    Par Yoltie dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2008, 18h04
  3. probleme avec un input de type image
    Par taka10 dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2006, 10h45
  4. Pb avec un input de type file
    Par stecos dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2005, 10h03
  5. [DOM IE]:recuperer tous les input de type checkbox
    Par sleepy2002 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/12/2004, 18h38

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