Stéphane Rangaya

Contrôle de formulaire : Le commutateur

À force de naviguer sur Internet, je suis certain que vous avez déjà croisé les principaux contrôles de formulaire existant.

Il y a par exemple :
  • La case à cocher (checkbox) : Vous avez plusieurs réponses et plusieurs sont possibles à la fois (exemple: Où aimez-vous passer vos vacances ?)
  • Le bouton radio : Vous avez plusieurs réponses, mais une seule n'est possible à la fois (exemple : Êtes-vous marié, célibataire, veuf ?)
  • Le champs texte : Vous avez simplement à entrer un text court (exemple : Quel est votre nom ?)
  • La zone de texte : Vous avez à entrer un texte long (exemple : Décrivez en 300 mots vos dernières vacances)
  • Le bouton : Il suffit de cliquer et une action se produit (quand ça marche :).
Au fil des années, les webmasters se sont habitués à utiliser le bouton radio quand l'utilisateur doit effectuer un choix unique et qu'il y a plus de 2 possibilités. Par exemple "Êtes-vous une fille ou un garçon". Je ne pense pas qu'il soit bon de procéder ainsi. Le bouton radio, est je pense, un contrôle à utiliser quand il y a une liste de choix uniques avec plus de 2 possibilités.

Par exemple, utilisons deux boutons radios pour répondre à cette phrase :

Je veux être

Pourquoi n'est-ce pas une bonne solution ?
  • Le premier point est que si la réponse "un ange" est sélectionné par défaut, je dois cliquer sur l'autre bouton radio (celui de "un démon") pour changer de réponse. Si je change d'avis, je dois retourner sur le premier bouton radio pour recliquer sur celui ayant pour étiquette "un ange". Comme ça, ça n'a l'air de rien, mais c'est une perte de temps considérable, surtout sur un terminal où la navigation se fait à l'aide d'un clavier (comme un téléphone mobile).
  • Un autre point, plus contestable celui-ci, mais à prendre en considération quand même, est que l'utilisateur peut s'interroger sur l'action exécutée par un clic sur le bouton radio entre "un ange" et "un démon". Certes, on pourrait tracer un trait en CSS, rajouter des espaces entre les deux choix. Ce problème ne se pose généralement pas lorsque l'on a plus de trois choix, car généralement on a tendance à placer les choix les uns en dessous des autres plutôt qu'à la suite les uns des autres, ce qui est faisable lorsqu'il n'y a que deux choix, en raison de la place disponible.
  • Supposons qu'il y ait une liste de choix uniques à deux choix (par exemple : Quel est votre sexe ? Frites ou Nuggets ? Télé ou Radio ? etc..), il faudrait jongler avec les deux colonnes de choix. Ce n'est franchement pas le plus agréable, d'autant plus que cela nécessite de bouger la souris (et sur un terminal sans souris, ça augmente considérablement les actions à effectuer).
Mais, me direz-vous, puisqu'il n'y a que deux choix, pourquoi ne pas s'arranger pour que la réponse soit l'un des choix. S'il n'est pas sélectionné, c'est que le choix est l'autre. Cette solution nécessite alors une case à cocher (car si un bouton radio est seul, il ne peut pas être décoché). Voici un exemple :

Je suis

Bon, je l'admets, mon exemple n'est pas des plus convaincant (bien que je sois réellement un ange :p) car le fait de décocher la case ne fait pas de moi un démon. J'aurai pu choisir quelque chose qui ait un sens à la fois lorsque l'on utilise un bouton radio ou une case à cocher comme :
  • Activer et désactiver pour les boutons radios
  • Activer pour la case à cocher
Oui. On pourrait utiliser cela. Mais ça n'est pas prévu pour. Quand plusieurs chemins s'offrent à nous, c'est qu'un meilleur ne s'est pas encore présenté. L'idée est donc de trouver une solution pour pouvoir permettre à l'utilisateur de choisir entre deux choix, d'une manière simple, rapide et efficace.

De ce que j'ai expliqué plus haut, la case à cocher a l'avantage d'être un seul et unique bouton. Activable et désactivable sans bouger la souris. L'inconvénient est que l'explication n'est pas aussi claire que lorsque l'on a deux choix avec deux boutons radios ayant chacun une étiquette.

J'ai donc cherché une solution pour pouvoir relier le meilleur des deux mondes, à savoir un seul et unique contrôle, mais deux choix possible. Comment me direz-vous ? J'ai décidé de nommer cela le commutateur (switch, en anglais) parce que ça me fait penser aux commutateurs pour allumer les lumières dans mon appartement. Il y a un seul bouton et en fonction de l'endroit où vous appuyez, soit il bascule sur On, soit il bascule sur Off. De ce fait, on a un comportement rigoureusement identique à celui attendu : un bouton, deux choix.

Mais ce genre de contrôle n'existe pas en HTML. Pour l'utiliser, il faut donc le créer. Pour ce faire, il suffit d'un peu de javascript, de deux images et d'une case à cocher pour :
  • Afficher une image A lorsque la case est cochée
  • Afficher une image B lorsque la case est décochée
  • Masquer la case à cocher
Finalement, on se retrouve avec le résultat suivant :

switchpreview.pngPour voir le fonctionnement réel, je vous invite à visiter cette page d'exemple.

Si vous souhaitez reproduire ceci, téléchargez ce javascript et ces deux images. Il suffit ensuite de créer dans une page web (où vous avez lié le javascript) un contrôle de type checkbox (une case à cocher) avec la classe switch.

Il suffit ensuite de récupérer l'état de la case à cocher. Si la case est cochée, c'est que j'ai décidé d'être un ange, si elle ne l'est pas, c'est que j'ai décidé d'être un démon. Il est important de comprendre qu'il y a une différence entre décider d'être un démon (cas du commutateur où la case à cocher est décochée) et décider de ne pas être un ange (cas de la case à cocher standard où la case à cocher est décochée).

Notez que si cela fonctionne très bien avec Firefox et Safari (et Nokia N95), ce script n'est pas compatible IE ni Opera. Si vous avez des suggestions à faire ou à apporter, n'hésitez pas (et n'oubliez pas de trackbacker cette note pour avoir une sorte d'index des améliorations).

Il s'agit juste d'une idée. Ce contrôle de formulaire n'a pas forcément sa place à chaque fois, mais je pense qu'il est à privilégier lorsqu'on est face à deux choix, ou qu'une case à cocher n'est pas assez explicite. Je n'ai pas encore vu ce genre de contrôle sur Internet, mais Apple l'utilise déjà dans l'iPhone (et donc iPod touch) donc je pense que c'est une idée à explorer et pourquoi pas adopter.

Màj : Beaucoup sont sceptiques quant à la nécessité ou non d'un tel contrôle. Je reste persuadé qu'il a sa place. J'ai d'ailleurs trouvé un contrôle de ce type dans Pages d'Apple, qui a compris l'intérêt pour la simplification de l'interface utilisateur. Je ne sais pas si on verra ce type de contrôle dans Windows ou Linux, trop figés sur ce type d'éléments (Apple change d'interfaces comme de chemises) pour pouvoir essayer d'innover et d'aporter des solutions visant à simplifier le quotidien des utilisateurs.

switchfromapple.pngJe le répète, pour ceux qui n'auraient pas compris, je parle là d'un concept, pas encore d'un application (il est beaucoup trop tôt !). Il y a encore toute une réflexion à faire, notament en terme d'accessibilité (les étiquettes doivent être cliquables, que se passe-t-il lorsque je clique sur une étiquette, etc...) qu'Apple n'a pas encore fait (bien que le commutateur soit déjà implémenté). C'est à venir (je l'espère), mais comme je l'ai dit, c'est juste le début, c'est juste une idée, juste un concept.

1 trackbacks

Voici la liste des liens vers les blogs faisant référence à cette note : Contrôle de formulaire : Le commutateur.

URL de trackback pour cette note : http://www.stephanerangaya.com/cgi-bin/mt/mt-tb.cgi/746

iPhone-like switch depuis mathieu's blog sur 24 septembre 2007 13h13

Stéphane a écrit dernièrement une note très intéressante sur les différents contrôles que l’on peut trouver sur Internet. Partant d’un exemple simple, il en est arrivé à un très bon compromis entre la case à cocher et le bouton radio : l... Lire la suite

11 commentaires

Le problème c'est qu'on garde l'habitude de ce déplacer sur l'emplacement des petits cercles.

Et c'est peut être bien pour les téléphones, mais les textes non cliquables à la souris c'est pas top!!

Trève de bavardage, si un système comme çà existe il sera implémanté dans IE en 2035 et comme IE reste majoritaire :p

Mais réflexion intéressante, reste à la proposer au W3C

Regarde plutôt l'idée, car mon implémentation est loin d'être parfaite. Il faudrait que le commutateur commute lorsque l'on clique sur l'un des deux label. Et puis je ne pense pas que ce systeme ne se limite qu'aux navigateur, il a sa place dans les applications aussi, tu ne penses pas ?

Bon cas d'étude, mais je ne suis pas convaincu par l'idée de ce nouveau bouton. Je pense qu'en définitive on se retrouve comme si on avait 2 boutons radios. Par contre l'idée d'orienter le choix de l'utilisateur grâce à une case à cocher est une excellente chose, mais réaliste que pour un choix binaire, c'est à dire oui/non, et plus difficile à appliquer pour un choix du genre homme/femme.

Pourquoi un choix du genre homme/femme ne peut-il pas être considéré comme un choix binaire ?

Justement, pourquoi avoir 2 contrôles (les boutons radio) quand on peut en avoir qu'un (la case à cocher déguisée en switch) ?

Ça simplifie pas mal les choses quand même.

Quand je disais choix binaire, je pensais surtout à la l'interprétation de la case à cocher. Par exemple dans la zone commentaire d'un blog on a :

O Conserver mes infos personnelles

Si on coche ça enregistre, sinon rien ne se passe. Pour moi c'est un choix binaire oui/non. Par contre je vois mal dans un formulaire pour décrire le sexe d'une personne :

O Homme

La personne risque de pas bien comprendre, et si c'est une femme, pourquoi n'aurait-elle pas le choix de son sexe proposé dans le formulaire. Pour moi ce n'est pas un choix binaire, mais juste un choix avec 2 possibilités où il est préférable d'indiquer chaque proposition pour une meilleure compréhension.

Oui c'est ce que je dis. Le switch permet d'avoir un choix avec 2 possibilités mais un seul contrôle à activer. Et c'est tout autant applicable avec le choix binaire. Par exemple :

Conservation des infos personnelles activée (o ) suspendue

Je suis un homme ( o) une femme.

J'ai vu qu'il y avait un contrôle de ce type dans Pages 08, je ferai un screenshot dans la soirée.

Personnellement, même si je n'ai pas le temps de développer car je dois partir, je trouve ton idée très interessante Stéphane, et honnêtement, ça vaudrait le coup d'être approfondie.

Je trouve ça beaucoup plus "agréable" et plus pratique pour l'utilisateur.

De plus, ça fait très "esprit mac", ce qui séduit de plus en plus de monde je pense.

A bon entendeur.

Bonne continuation.

En effet ce genre de contrôle peut à mon avis simplifier la vie de l'utilisateur dans certains cas.

Apple l'utilise en effet dans Pages '08 comme Stéphane l'a fait remarquer (je l'ai repéré pour activer ou non le suivi des modifications) et également dans les dernières beta de Leopard (pour activer ou non Time Machine) en plus des nombreux contrôles de l'iPhone et de l'iPod Touch...

Ces contrôles méritent qu'on s'y arrête un peu et qu'on y réfléchisse...

Moi je trouve que tu te tortures l'esprit je ne vois pas trop en quoi ça simplifie, au final on a toujours le choix entre deux "états" et pour changer d'un état à un autre il faut un clic.

Le seul point positif c'est que c'est plus beau mais si c'est plus compatible ie :/

Je veux bien comprendre en quoi ça serait mieux pour l'univers :)

Oui mais pour chanter l'état tu n'as pas déplacer ton curseur.

Je n'ai pas dit que ça serait mieux pour l'univers, mais c'est juste une pensée que j'ai eu, donc j'ai cherché à développer. Voilà :)

Ok c'est plus beau en tout cas :)

 Abonnez-vous au flux de ce blog

À propos de cette note

Cette note a été rédigée par Stéphane le jeudi 13 septembre 2007 à 21h48.

Retrouvez le contenu récent sur l'index principal ou allez dans les archives pour retrouver tout le contenu.



Commenter cette note


Archives

© Stéphane Rangaya - Animé par Movable Type Open Source