Implémenter facilement un effet de recherche en direct

L'effet de recherche en direct n'est pas une nouveauté dans les applications de bureau. Sous Mac OS X ou Windows Vista / 7, il vous suffit de saisir quelques lettres dans un champ de recherche, vous obtenez presque instantanément le résultat de la recherche à la volée. Devoir appuyer sur le bouton de soumission devient une vieille école.

Ce tutoriel va vous montrer comment amener cet effet cool dans le monde web avec jQuery. Le code utilisé dans ce tutoriel est modifié en fonction de l'approche de John Resig..


Effet Livesearch dans Windows 7


Effet Livesearch sous OS X


Caractéristiques


  • Présente le résultat de la recherche à la volée
  • Recherche floue
  • Super rapide, pas d'appels AJAX

Étape 1: le HTML

Pour commencer, nous avons besoin de quelques éléments HTML, notamment:

  • Une saisie de texte, dans lequel nous tapons nos requêtes.
  • Une liste non ordonnée, pour afficher le résultat de la recherche

… Et deux bibliothèques javascript:

  • jQuery: Vous devez au moins savoir ceci pour terminer ce tutoriel.
  • Score de mercure: Ce script magnifique imite le célèbre algorithme de LiveSearch Quicksilver sur Mac. Il indique si deux chaînes de texte sont pertinentes et comment. C'est comme un mini google dans un fichier js. Les utilisateurs aiment tous la recherche floue, non? Et ils aiment tous que les résultats de recherche apparaissent du plus pertinent au moins pertinent. Merci à l'excellent travail de Lachie Cox!

Dernier point mais non le moindre, nous avons besoin de certains éléments pour effectuer une recherche. Dans ce tutoriel, utilisons les noms de nombreux frameworks Web en tant que données factices, OK? (Voir la liste de ces frameworks)

Les données de "recherche à partir de" peuvent être fournies dans des tableaux, des JSON ou n'importe quel formulaire, à condition qu'elles puissent être bouclées en javascript. Les tableaux multidimensionnels peuvent également être utilisés. Mais pour faciliter la démonstration et la compréhension, les données utilisées dans ce tutoriel sont un tableau simple à une dimension appelé "éléments"..

Et enfin, voici le code HTML. Faites attention à l'endroit où les deux bibliothèques JS sont incluses. Remarque: css n’est pas l’élément clé de cet effet, nous ne perdrons donc pas une seconde pour le style. Ils sont minifiés. J'espère que cela ne vous dérangera pas et ne vous distraira pas. Concentrons-nous sur HTML et JS.

Enregistrez le code suivant dans un fichier html et commençons!

     Effet jQuery Livesearch    

Démo de jQuery Livesearch

Trouvez votre cadre Web préféré

<-- Type in here and get search results LIVE!

    Étape 2: Firebug est notre meilleur ami!

    En tant que gars javascript, vous ne pouvez pas vivre sans Firebug aujourd'hui. C'est vraiment un must pour tous ceux qui travaillent avec jQuery. Vous pouvez compléter ce didacticiel sans installer Firebug. Mais avec Firebug, nous sommes en mesure de voir beaucoup de choses dans les coulisses, ce qui est essentiel pour comprendre la recherche dans cet effet..

    Rappelez-vous les objets factices à partir desquels effectuer une recherche Oui, les noms de framework. Voyons si elles sont au bon endroit avec Firebug:

    1. Ouvrez le fichier HTML avec Firefox.
    2. Ouvrez Firebug et basculez vers le panneau "Console" (ctrl + shift + c).
    3. Tapez "items" (sans guillemets) dans la case à droite, et cliquez sur "Run".

    Vous devriez voir quelque chose montré dans l'image ci-dessous. Firebug affiche la variable "items" qui est un tableau. Oui, nos noms de cadre sont exactement là. Continuons!



    Étape 3: la logique

    Parlons maintenant de la logique. Pour que cet effet fonctionne, une séquence de choses doit se produire:

    1. L'utilisateur appuie sur une touche.
    2. Nous obtenons le texte de la boîte de recherche. Appelons cette "requête".
    3. Pour chaque nom de cadre, nous vérifions si la requête est pertinente et si elle est pertinente..
    4. Nous filtrons les noms de framework pertinents et les trions en fonction de leur pertinence.
    5. Nous présentons le résultat à l'utilisateur.

    Facile, hah? Sauf pour une chose. Si je recherche un cadre appelé "cake", la logique ci-dessus s'exécute, un cycle par lettre, 4 cycles au total, non? Mais les 3 premiers cycles ne sont absolument pas nécessaires pour réduire les performances de manière significative. Pour atténuer cela, nous attendrons que l'utilisateur arrête de saisir avant de lancer notre logique. Et si un utilisateur arrête de taper pendant 0,2 seconde, nous supposons qu'il a terminé. À ce stade, notre logique est assez délicate. Il est temps de vous salir les mains et de commencer à coder!


    Étape 4: Écoute de l'événement

    Dans la vraie vie, l'écoute peut être extrêmement importante. Ceci est également vrai dans le monde de jQuery, où tout commence par l'écoute d'un événement.

    Recherchez "placeholder" dans le fichier HTML. Mettez le code suivant à cet endroit.

    Le code suivant écoute l'événement keyup. Jetez-les entre lese