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 :

Comparer une chaîne avec un filtre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Par défaut Comparer une chaîne avec un filtre
    Bonjour,

    Voilà, je voudrais appliquer un filtre sur le contenu d'un tableau pour n'afficher que les éléments qui répondent à ce critère.

    J'ai un input text (id=recherche) qui contient ce que je veux faire "matcher" avec l'indice du tableau mDescription
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var recherche= document.getElementById('recherche').value
    for (var i in mDescription) {
            if( i.indexOf(recherche) != -1) {
                     #Affichage ...
            }
    }
    Ainsi si je tappe AHX dans mon champ recherche j'ai les éléments suivants qui s'affichent :

    AHX4151GH
    AHX6726IJ
    5AHX38383HU
    58AHX2215IJ
    AHX5199IJ

    Je voudrais faire évoluer cette recherche en utilisant un filtre dans mon champ de recherche, par exemple si je tappe *AHX*IJ je ne devrais avoir que :
    AHX6726IJ
    58AHX2215IJ
    AHX5199IJ

    Et si je tappe AHX*IJ :
    AHX6726IJ
    AHX5199IJ

    Pourriez vous m'aider ?
    Merci d'avance

  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
    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
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Bonjour
    Il y a un truc qui s'appelle les RegExp

    http://fr.wikipedia.org/wiki/Expression_rationnelle
    http://www.expreg.com/memo.php
    http://www.w3schools.com/jsref/jsref_obj_regexp.asp
    http://www.regular-expressions.info/...ptexample.html

    Il est a noter que l'Objet RegExp ne fait pas partie de la norme EcmaScript
    il n'est donc pas présent dans le langage.
    Mais il est dans la norme W3C et DOIT donc être implémenté par tous les navigateurs

    A+JYT

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 56
    Par défaut
    J'ai suivi votre piste et je suis arrivé au résultat attendu, merci !

    Pour info, voilà mon bout de code :

    En gros, les * que je tappe dans mon champ recherche doivent être remplacées par la regex .* (. = tout caractère), et en rajoutant un ^ en début et un $ en fin d'expression :

    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
     
    	var filtre = document.getElementById('champ_filtre').value
     
    	t=filtre.indexOf("*");
    	/* replace ne remplace que la première occurence, donc je boucle : */
    	while (t >= 0) {
    		filtre=filtre.replace("*",".ETOILE");
    		t=filtre.indexOf("*");
    	}
    	/* Pour éviter une boucle infini je dois passer par 2 boucles */
    	t=filtre.indexOf("ETOILE");
    	while (t >= 0) {
    		filtre=filtre.replace("ETOILE","*");
    		t=filtre.indexOf("ETOILE");
    	}
    	var reg = new RegExp('^' + filtre + '$');
     
    	for (var i in monTableauAfiltrer) {
    		if(i.match(reg)) {
    			/* Code ... ! */
    		}
    	}

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

Discussions similaires

  1. [Sql Server 8.0]Requête dans une chaîne avec Cursor à executer
    Par Nicodemus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/11/2006, 17h34
  2. impossible de comparer une chaine avec use strict
    Par erc_fun dans le forum Langage
    Réponses: 6
    Dernier message: 05/10/2006, 10h56
  3. Réponses: 4
    Dernier message: 12/05/2006, 19h11
  4. [RegEx] Tester une chaîne avec ereg()
    Par Anduriel dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2006, 11h36
  5. [RegEx] Remplacer une chaîne avec preg_replace
    Par GregPeck dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 12h21

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