SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

278 Plugins, 195 contribs sur SPIP-Zone, 65 visiteurs en ce moment

Accueil > Outils pour plugins > jQuery UI > Réaliser un champ de formulaire avec autocomplétion avec jQuery (...)

Réaliser un champ de formulaire avec autocomplétion avec jQuery UI

27 février 2013 – par erational

12 votes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Cet article est un tutoriel pour montrer la simplicité d’intégration de jQuery UI dans SPIP 3.

Dans un premier temps, nous allons intégrer tout le code « à la main » pour analyser le mode de fonctionnement. En fin d’article on proposera la même solution via le plugin Sélecteur générique qui propose la même solution d’une façon standard et générique.

Sur le même sujet, consulter l’article qui explique la façon d’intégrer jQuery UI dans vos plugins

Objectif

Le but est de réaliser un champs de formulaire avec auto-complétion.

Il existe plusieurs solutions compatible avec jQuery comme AutoComplete, typeahead.js. Nous allons retenir celle fournie par Jquery UI qui a l’avantage d’être intégrée nativement dans SPIP 3.

En savoir plus : Page de documentation du widget jQuery UI Autocomplete

Étape 1 : Charger jQuery UI Autocomplete

Comme beaucoup de plugins javascript, il convient de charger les feuilles de style et les scripts. En SPIP 3, jQuery UI est fourni sous forme d’un plugin du noyau nommé plugins-dist/jquery_ui

Éditer dans votre page squelette en ajoutant les lignes suivantes

  1. <head>
  2. ...
  3. <script type="text/javascript" src="#CHEMIN{prive/javascript/ui/jquery-ui.js}"></script>
  4. <script type="text/javascript" src="#CHEMIN{prive/javascript/ui/jquery.ui.autocomplete.js}"></script>
  5. <link rel="stylesheet" href="[(#CHEMIN{css/jquery-ui.css})]" type="text/css" media="all" />
  6. ...
  7. </head>

Télécharger

Inutile d’ajouter jQuery qui sera chargé automatiquement via la balise #INSERT_HEAD

Étape 2 : Préparer les données

Le plugin est chargé. Il faut maintenant alimenter l’auto-complétion par une liste de mots qui sera appelée lorsque l’utilisateur tapera un mot

Cette page lorsqu’on lui soumet la requête « pie » devra retourner tous les mots contenant ces lettres comme pierrot, homo sapiens, pie noire ....

Nous allons, par exemple, lister tous les mots-clés du site en créant une page autocomplete.html

  1. [(#REM) noisette ajax pour fournir une liste de mots
  2. l'autocompletion jQuery UI autocomplete
  3.  
  4. parametre
  5. - term : lettre cherchee
  6.  
  7. ]#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
  8. [<BOUCLE_mots(MOTS){titre LIKE %#ENV{term}%}{par titre}{","}{0,10}>{"id":#ID_MOT,"label":[(#TITRE|json_encode)],"value":[(#TITRE|json_encode)]}</BOUCLE_mots>]

Télécharger

Explications

  • La balise #HTTP_HEADER permet de forcer le Mime-type et d’empêcher l’affichage des boutons
  • La boucle MOTS effectue une recherche avec le critère LIKE qui permet d’avoir un joker
  • La syntaxe est en format JSON, ce qui implique de séparer les résultats par des virgules {","} et d’encoder les balises SPIP avec le filtre json_encode

Selon vos besoins, il faudra personnaliser cette page qui alimente la liste de mots.

Étape 3 : Appeler l’auto-complétion sur votre champs de formulaire

Il faut maintenant appeler le plugin sur un objet de la page, par exemple, le formulaire de recherche et son champs principal qui possède l’id recherche

L’appel se fait en javascript, par exemple en ajoutant dans votre head, le code suivant :

  1. <head>
  2. ...
  3. <script type="text/javascript">
  4. $(function() {
  5. $( "#recherche").autocomplete({
  6. source: "spip.php?page=autocomplete",
  7. minLength: 2,
  8. });
  9. });
  10. </script>
  11. ...
  12. </head>

Télécharger

Explications
On appelle la page listant les mots avec le paramètre minLength qui permet de déclencher les appels uniquement à partir de la 3e lettre tapée (pour éviter d’épuiser inutilement le serveur).

Voilà l’autocomplétion est en place !


Alternative : Réaliser la même chose avec le plugin sélecteur générique

La plugin Sélecteur générique propose de faire le travail à votre place. Pour pouvoir l’utiliser dans la partie publique, installer au préalable le plugin Sélecteur publique (à télécharger sur cet article)

Ensuite l’autocomplétion est extrêmement simplement à mettre en place

Sur votre champ input, ajouter l’attribut data-selecteur

Créer une page dans votre répertoire squelettes/selecteurs/patate.html

  1. #HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
  2. [(#REM)
  3.  
  4. noisette ajax pour fournir une liste de mots
  5. l'autocompletion jQuery UI autocomplete via le plugin selecteur generique
  6.  
  7. parametre:
  8. - q : recherche
  9.  
  10. ][<BOUCLE_mots(MOTS){titre LIKE %#ENV{q}%}{par titre}{","}{0,10}>{"id":#ID_MOT,"label":[(#TITRE|json_encode)],"value":[(#TITRE|json_encode)]}</BOUCLE_mots>]

Télécharger

Pour en savoir plus sur le commit d’intro du sélecteur générique et aussi Sélecteur générique

Retour en haut de la page

Tout afficher

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Les crayons

    23 avril 2008 – 724 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

  • Saisies

    27 mars 2010 – 343 commentaires

    Introduction Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeurs (...)

  • spiPDF v0.2.1 : : générer des contenus sur mesure en PDF

    16 février 2011 – 155 commentaires

    Le plugin spiPDF génère des fichiers au format PDF d’article ou de tout autre élément SPIP, simplement à partir d’un squelette construit au format HTML 4 et facile à modifier. Présentation Le plugin génère des fichiers PDF à partir d’un squelette écrit (...)

  • Polyhiérarchie

    14 juillet 2009 – 138 commentaires

    Ce plugin permet de rattacher un article ou une rubrique à plusieurs rubriques parentes.

  • Galleria (fr)

    16 novembre 2011 – 121 commentaires

    Une galerie d’image qui utilise la librairie javascript Galleria. Description Ce plugin vous permet d’ajouter des galeries d’images à vos articles. La galerie créée utilise la librairie javascript Galleria. Le plugin propose un modèle nommé (...)