Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regex pour supprimer les balises <input...>

Sujet résolu
    7 juin 2010 à 9:08:56

    bonjour,
    je ne sais pas si c'est le bon endroit pour poser la question mais tant pis.
    je dois faire une regex par rapport a une checkbox pour que le tri de mon tableau ne prenne pas en compte celle ci.
    la regex suivante me permet de trier des champs simple: var i=parseFloat(f.replace(/(\$|\,)/g,'')),
    n=parseFloat(c.replace(/(\$|\,)/g,''));
    mais du moment ou je me un <input> le tri ne fonctionne plus.
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2010 à 9:11:13

      J'ai pas compris le but de ta regex, tu pourrais mettre un exemple concret ?
      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2010 à 9:19:05

        enfaite j'utilise JQuery pour trier mon tableau en cliquant sur les entêtes.

        /*
         * Script qui permet de trier un tableau
         */
        
        var table=function(){
            //creation de l'objet sorter
            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){
                //t correspond a l'identifiant du tableau
                //f correspond a la colonne qui sera trier lors de l'ouverture de la page
        
                
                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,''));          
                      
               
        
                 //teste si i et n sont des nombre
                if(!isNaN(i)&&!isNaN(n)){
                    f=i,
                        c=n
                }
                return (f>c?1:(f<c?-1:0))
            }
            return{
                sorter:sorter
            }
            
        }();
        

        mais lorsque je rajoute ceci :
        <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/>
        

        le tri ne fonctionne plus . et je suppose que c'est dans cette partie que je dois rajouter quelque chose pour dire de ne pas prendre en compte la checkbox :
        var i=parseFloat(f.replace(/(\$|\,)/g,'')),
                          n=parseFloat(c.replace(/(\$|\,)/g,''));
        

        • Partager sur Facebook
        • Partager sur Twitter
          7 juin 2010 à 9:22:46

          Tu n'aurais pas ta page online ? Car j'ai vraiment du mal à imaginer le truc.
          • Partager sur Facebook
          • Partager sur Twitter
            7 juin 2010 à 9:41:02

            Tu peut mettre en ligne ton code html et php qui vas avec ??

            Sinon un conseil met des noms distincts à tes variables parceque la on si perd un peu en lisant ton code :p
            • Partager sur Facebook
            • Partager sur Twitter
              7 juin 2010 à 9:42:11

              comment ca vous vous perdez en lisant le code?
              • Partager sur Facebook
              • Partager sur Twitter
                7 juin 2010 à 9:43:19

                Il tourne à gauche, au lieu d'aller à droite =/
                • Partager sur Facebook
                • Partager sur Twitter
                  7 juin 2010 à 9:45:44

                  le script que j'ai mis dans le premier n'est pas de moi je les trouver sur internet c'est un script JQuery qui permet de rendre triable un tableau
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 juin 2010 à 9:55:47

                    Ta essayé de mettre des guillemet entre /(\$|\,)/g ?
                    Du genre :
                    var i=parseFloat(f.replace("/(\$|\,)/g",'')),
                        n=parseFloat(c.replace("/(\$|\,)/g",''));
                    


                    Parce que moi dans mes codes toutes mes regex sont entourées de "".
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 juin 2010 à 9:56:41

                      Les reg ne sont pas entouré de " ou de '.

                      Sauf si tu les fais avec new RegExp()
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 juin 2010 à 10:00:51

                        lorsque je met "" \$ et \, sont souligne et le tri ne fonctionne plus

                        je veux juste supprimer les balises html
                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 juin 2010 à 11:58:51

                          Bonjour,

                          j'ai testé \<input.*\/\> mais cela ne fonctionne pas alors que lorsque je le test sur ce site test de regexp cela me dit que la chaîne vérifie l'expression régulière.
                          voila comment je l'ai écrit:

                          var i=parseFloat(f.replace(/(\<input.*\/\>,)/g,'')),
                                         n=parseFloat(c.replace(/(\<input.*\/\>,)/g,''));
                          


                          ma checkbox
                          <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/>
                          

                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 juin 2010 à 12:13:38

                            Mais je comprend absolument que dalle de ce que ta regex est censé faire.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 juin 2010 à 12:25:21

                              la regex que je cherche à faire va me permettre de dire de ne pas tenir compte de la checkbox lorsque je clique sur l'entête parce que quand je mets ceci:
                              <td background="images/titrecadre.gif" align="left" valign="middle" class="rightBorder"nowrap>
                                    <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/>
                                 <?php echo $cont->nom; ?>
                               </td>
                              

                              le tri ne fonctionne plus et c'est parce que la checkbox est là. donc je veux dire au script de ne pas regarder tout les champs <input>
                              je sais pas si c'est plus clair
                              • Partager sur Facebook
                              • Partager sur Twitter
                                9 juin 2010 à 12:59:23

                                Mais, tu fais une regex sur le td.innerHTML c'est ça ?

                                Car si c'est ça, tu sais, le DOM existe x_X
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  9 juin 2010 à 13:40:53

                                  je ne comprends pas trop ce que tu veux dire par faire" une regex sur le td.innerHTML"
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    9 juin 2010 à 14:11:50

                                    Je vais pas critiquer le code car sinon je vais en écrire une tartine (et j'ai pas trop envie de passer beaucoup de temps pour ça...)

                                    Donc je suppose que ton problème peut se résoudre en lui disant de ne pas trier si ce n'est pas un nombre (ce que tu peux faire à la ligne 93)

                                    Tu peux donc faire quelque chose comme ça:
                                    if(!isNaN(i)&&!isNaN(n)){
                                      f=i; //au passage, cette ligne et la suivante sont inutiles (il suffit de comparer i et n) mais bon...
                                      c=n;
                                    }else{return 0;}
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      9 juin 2010 à 14:22:30

                                      j'ai essayé ta solution cela fonctionne là où se trouve ma checkbox mais plus sur les autres colonnes qui sont des dates et des nombres et des adresses.
                                      le code n'est pas de moi. je l'ai trouvé sur internet mais je ne retrouve plus ou mais dés que je l'ai je le mets ici et vous pourrez regarder. ce script fonctionne très bien pour un tableau simple sans <input> ...
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        9 juin 2010 à 15:00:23

                                        Dans ce cas vérifie s'il s'agit d'un input:
                                        if(!isNaN(i)&&!isNaN(n)){
                                          f=i;
                                          c=n;
                                        }else{
                                          if((/<input/).test(f) || (/<input/).test(c)){
                                            return 0;
                                          }
                                        }
                                        

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 juin 2010 à 13:31:09

                                          bonjour,
                                          je vous remercie tous d'avoir essayé de m'aider. finalement j'ai trouvé un autre script qui fonctionne avec toutes les balises et qui en même temps me régler un autre problème.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Regex pour supprimer les balises <input...>

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown