Accueil

Traduction

Tutoriel sur JS natif, Vue.js, jQuery.js & Node.js

Tutoriel JavaScript - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

jQuery : une extension de jQuery UI

On ne peut pas tout faire avec la librairie de base de jQuery. Par exemple ne cherchez pas à programmer un "drag and drop" (glisser et déposer) avec la librairie de base de jQuery. Mais heureusement il y a des extensions (appelées aussi "greffons").
L'extension la plus célèbre est jQuery UI (UI : comme interface utilisateur). Dans cette page je vais présenter les outils (ou widgets) de cette extension.

On dit que jQuery UI c'est un pack de "widgets" (composants graphiques)."Drag & drop" est le composant le plus utilisé.
Certains de ces widges deviendront progressivement moins utiles avec la montée en puissance de HTML, CSS mais aussi JS natif.

Récupérer cette extension

Après extraction vous obtenez un dossier comprenant différents fichiers.

Comme dans la librairie de base il y a pour chaque type de fichiers (feuille de style, fichier JS) deux versions : la version avec commentaire et la version de production minimaliste (beaucoup plus légère).

Attention jQuery UI c'est non seulement un framework JavaScript mais aussi un framework CSS. Si vous chargez dans vos pages uniquement le fichier d'extension .js de la librairie jQuery UI le résultat sera ... décevant. Il faut charger aussi la feuille de style du pack : jquery-ui.min.css !

Créer différents onglets dans une page

Plutôt que de créer trois pages ou une page unique très longue j'ai décidé de répartir le texte de la page entre trois onglets.

En HTML il faut créer une boite (balise SECTION) contenant trois boites "enfants" (balises ARTICLE).
Il faut aussi créer des liens vers chaque article.

Pour que l'aspect de la page soit modifiée radicalement (création d'onglets : un par article) il suffit d'appliquer à la boite principale la méthode tabs() de jQuery UI.

Le code de l'exemple

J'ai renommé les fichiers correspondant à la librairie jQuery UI. Ils se nomment tout simplement : jquery_ui.js et jquery_ui.css

La librairie jQuery UI ne peut fonctionner seule ; comme c'est un extension de jQuery, la librairie principale jQuery doit être chargée également.

Concernant le code HTML dans la partie BODY il est relativement simple.

Quant au script il est d'une simplicité redoutable !
Il suffit d'appliquer la méthode tabs() au conteneur principal (élément SECTION).

Comprendre comment ça marche !

En fait jQuery UI ajoute des classes à certaines balises ; classes qui sont définies dans la feuille de style de la librairie jQuery.
C'est pour cette raison qu'il faut charger non seulement le fichier .js de la librairie mais aussi le fichier .css !

Avec les outils de développement du navigateur vous pouvez visualiser le code effectif de la page.
Extrait du code effectif de la page :

jQuery UI a ajouté aux éléments HTML différentes classes décrites dans le fichier .css du greffon.
C'est ainsi que les onglets et les boites sont mises en formes.

Utiliser le widget "accordéon"

Pour gérer une page volumineuse on peut aussi utiliser la méthode accordion().
Dans ce cadre la première partie est dépliée ; les autres parties sont repliées (on ne voit que le titre).
Si le visiteur clique sur le titre de la deuxième partie celle-ci est alors dépliée (affichage du contenu) et la première partie est repliée (contenu masqué). Et ainsi de suite ...

Le code de l'exemple (extrait)

Dans la partie HEAD il faut toujours inclure les deux fichiers d'extension ".js" et la feuille de style (avec la balise LINK) de l'extension.
Mais ici, afin d'obtenir les dernières versions stables, je fais un lien vers le serveur GOOGLE qui met à disposition les librairies jQuery, jQuery UI les plus récentes.
Attention saisissez bien "https" (et non pas "http") !

Dans la partie BODY on retrouve exactement le même texte que dans l'exemple précédent.
Chaque partie du texte doit être précédée d'un titre qui contient un lien vide (balise A).
Cette instruction HTML est indispensable. Elle indique à jQuery UI les endroits où il doit se replier ou se déplier.

Le script est encore d'une simplicité déconcertante.
Il suffit d'appliquer la méthode accordion() au conteneur principal (ici la balise SECTION).

Comprendre comment ça marche

Comme avec le widget "onglets", le widget "accordéon" ajoute aux éléments HTML des classes décrites dans le fichier .css de la librairie à condition d'avoir chargé la feuille de style "jquery-ui.css".

Redimensionner les boîtes

Passons maintenant à la troisième méthode du greffon : resizable().
Dans l'exemple ci-dessous chaque image peut être redimensionnée.

Le code de l'exemple (extraits)

Dans la partie HEAD toujours inclusion de trois fichiers.

CSS : une règle de style pour affecter une dimension aux images.

Le script : application à la collection d'images de la méthode resizable().

Comprendre comment ça marche !

Les images apparaissent les unes sous les autres. Car là encore jQuery UI a rajouté des des classes aux éléments HTML !

Permuter des éléments de la page

Nous allons maintenant évoquer la méthode sortable()

Le code de l'exemple (extraits)

Attention pour que les éléments soient permutable au sein d'une élément parent il faut appliquer la méthode sortable() au parent (ici UL ou Ol) !

Dans la partie HEAD je charge le fichier jquery_touch_punch.js.
Sans ce "greffon" certains outils jQuery tels la méthode sortable() ne fonctionnent pas sur les terminaux à écran tactile (smartphone et tablette). Cette extension ne pèse que 2 KO !

Pour récupérer cette extension vous pouvez aller sur le site :http://touchpunch.furf.com

Glisser-déposer avec Jquery UI

Je vais maintenant vous présenter le widget le plus célèbre de jQuery UI : le "drag and drop".

Le code de l'exemple

Partie HEAD : Comme dans l'exemple précédent il faut charger deux fichiers JS (celui de la librairie jQuery et celui de jQuery UI).

Par contre dans le cadre d'un "glisser-déposer" il n'est pas nécessaire de charger la feuille de style de la librairie jQuery UI.

CSS : Les images sont des éléments inline-block (boites disposées côte à côte).

HTML : insertion de quatre images et création d'une grande boite avec un fond rose.

La première méthode rend "glissable" les éléments référencés (donc ici les images).
La deuxième méthode rend "déposable" les éléments référencés (donc ici une seule boîte: le DIV unique).
Donc on pourra faire glisser les images pour les déposer dans la boîte DIV (qui a un fond rose ...) !

Vous pouvez constater que les images peuvent glisser partout car je n'ai pas paramétrer la méthode draggable().

Exercice

Vous devez programmer un test de connaissances en biologie aquatique. Vous devez en effet classer quatre photos dans deux cadres ; deux photos représentent des algues et deux autres des plantes aquatiques.

Les images et les boites DIV (fond rose) sont "inline-block".
Dans le cadre du "responsive web design" les largeurs des images, des marges et des DIV doivent être exprimés en % !

Le code jQuery ne pose aucune difficulté.

Paramétrer la méthode draggable

Ne pensez pas que le "drag and drop" ne peut s'appliquer qu'à des images. On peut glisser & déposer n'importe quel élément de la page.
Dans les exemples vous avez vu que l'on pouvait déplacer les images n'importe où dans l'écran.
Dans l'exemple ci-dessous les éléments "draggable" ne peuvent être glissés qu'à l'intérieur d'une grande boite car la méthode draggable() est paramétrée.

Le code correspondant

Le "glisser-déposer" porte non pas sur des images mais sur des items de liste à puces.
Pour que ces items ressemblent à des boutons j'ai fait un gros effort en matière de CSS. Vous pouvez remarquez que la légende de chaque item est bien centrée horizontalement et verticalement. Il faut aussi se débarrasser de la puce.

HTML :
La boîte article comprend deux DIV ; la deuxième boîte DIV est identifié equipe.

JAVASCRIPT :

Il y a d'autres paramétrages possibles de la méthode draggable mais qui sont moins utiles ...

La saisie de dates

Les développeurs de site ont pris l'habitude d'utiliser jQuery UI et plus précisémment la fonction datepicker() pour créer dans les formulaires des champs date à partir de input type ="texte".

Attention il faut aussi mettre en forme le calendrier que l'on associe via la fonction datepicker() à un champ texte. Il faut donc non seulement charger le fichier JS de la bibliothèque jQuery UI mais aussi la feuille de style.

Exemple

HEAD : il faut charger deux fichiers JS (libraire jQuery de base + jQuery UI) et une feuille de style externe pour formater le calendrier.

CSS : Les éléments de formulaire sont de type inline-block afin que la champ (input) se positionne à droite de la légende (label).

HTML : trois champs texte donc deux légendés "saisir une date" ...

Le script : on associe à deux champs texte la méthode datepicker() décrite dans la bibliothèque jQuery UI

Il y a un gros bémol. Les dates saisies via le calendrier proposé par jQuery UI sont au format anglo saxon (mm-dd-yy).

Rassurez vous c'est pas dramatique. Il suffit de modifier un peu le script

Solution

Il a suffi d'argumenter la méthode datepicker() en précisant le format francophone.

Il serait préférable que le calendrier soit lui aussi francisé.

Calendrier en français

Pour franciser le calendrier il suffit de rajouter quelques lignes de code. Code facile à trouver sur la "toile". Il suffit de poser la question "franciser le calendrier de jquery ?".

Donc le script devient (pas de changement pour le CSS et HTML) :

Le format de saisie est proposé dans le tableau de paramétrage. Donc inutile de le préciser au niveau de la méthode datepicker().

Un widget obsolète ???

Remarque : Avec HTML 5 le widget calendrier de jQuery UI n'est plus à priori utile puisque il existe désormais les champs de type date.
Cependant ce type n'est pas encore implémenté par tous les navigateurs ...

Autocomplétion

Définition : vous commencez à saisir dans un champ texte et dès que vous avez tapé quelques lettres des suggestions apparaissent.

Il faut utiliser la méthode autocomplete() de jQuery UI mais aussi un tableau contenant une liste de mots.

Imaginons une recherche sur les grands acteurs de la deuxième guerre mondiale. Si vous tapez les lettres "De" le programme doit proposer "De Gaulle" par exemple.

Le code de l'exemple

Attention il faut télécharger la feuille de style de jQuery UI afin qu'il y ait une mise en forme de la liste de suggestion !

Script :
La méthode autocomplete a une option obligatoire : la source. Dans l'exemple la source est la variable liste.
Ici il y a aussi une option facultative : minLength : nombre minimal de caractères à saisir pour afficher une liste de suggestions.

La source peut être une liste externe ; un fichier par exemple.
Dans ce cas la valeur de l'argument source est une requête AJAX !