Les zones de saisie liste sont une structure HTML faite avec 2 éléments
dont l'un fournit le nom de la zone et l'autre sa valeur.
Structure d'une liste
Les listes se construisent avec 2 éléments : l'élément
select
est le conteneur des lignes de la liste qui sont faites avec des
éléments option.
Il doit y avoir une balise d'ouverture <select>
et une balise de fermeture </select>.
L'élément select
doit avoir un attribut name et la valeur de cet
attribut doit être unique parmi toutes les zones
composant le formulaire.
L'élément select
n'a pas d'attribut value.
Les lignes de la liste sont faites avec des
éléments option
qui contiennent le texte affiché pour la ligne.
Les éléments option
doivent avoir un attribut value.
Quand le formulaire sera envoyé au serveur pour traiement,
l'attribut value de l'option
sélectionnée sera associé à l'attribut name du select
pour contituer un couple nom / valeur.
Si aucune ligne n'apparait comme sélectionnée dans la liste,
c'est la première ligne de la liste qui sera choisie comme valeur
pour le couple nom / valeur envoyé au serveur.
Une ligne peut être sélectionnée par défaut : il suffit qu'elle ait
l'attribut selected.
selected est un attribut booléen qui
n'a pas de valeur : sa présence ou son absence dans la balise
d'ouverture définit la valeur true (présence) ou false
(absence). Le piège est d'écrire :
<option selected="false"...
Comme selected est présent, la valeur sera true
et le navigateur ne tiendra pas compte de l'égalité faite dans le
code HTML.
Zone désactivée, non transmise au serveur. Aucune
interaction n'est possible avec la zone (pas de focus, pas de
copie, etc). Attribut booléen.
selected
Ligne sélectionnée par défaut dans une liste.
value
Valeur initiale de la zone et qui sera transmise au
serveur si la ligne est sélectionnée dans la liste.
Déroulante ou défilante ?
liste déroulante
Une liste est dite déroulante si une seule ligne est affichée
et que les autres lignes de la liste apparaissent quand on clique
sur la fléche à droite.
liste défilante
Une liste est dite défilante si plusieurs lignes sont
affichées et qu'une barre de défilement verticale permet de faire
apparaitre les autres lignes de la liste.
C'est l'attribut size de l'élément select
qui permet de définir le nombre de lignes affichées.
Si l'attribut size est absent ou égal à 1 on obtient
une liste déroulante, sinon on obtient une liste défilante.
Si on peut choisir la hauteur de la liste avec l'attribut size,
aucun attribut ne permet de définir sa largeur qui est déterminée par
la plus longue ligne. Pour uniformiser la largeur des listes entre
elles et avec les autres zones de saisie du formulaire, on utilise
des règles de style CSS.
A part la largeur, les autres éléments d'une liste (lignes, marges
interne et externe, soulignement, zone interactive
d'affichage/masquage, etc.) sont très difficiles à styler de façon
homogènes dans les navigateurs (de pratiquement impossible avec
Internet Explorer et Chrome à mieux pour Firefox).
Listes de sélection
Ajouter à mes amis
Complétez le code HTML
pour obtenir le résultat ci-contre.
La feuille de style liée à l'exercice (form05.css)
fera automatiquement la mise en forme des éléments fieldset
et legend
Le formulaire utilise la méthode POST pour envoyer les
informations saisies à informatique.php.
Les listes s'appellent respectivement slcEdit et slcPref.
Les lignes de slcEdit affichent : NetBeans, Eclipse,
Scite, Notepad ++. La liste n'affiche qu'une ligne et la ligne
Eclipse est sélectionnée par défaut. Les valeurs des lignes sont le
texte affiché par la ligne.
Les lignes de txtPref affichent : C, C#, C++, CSS,
HTML, JavaScript, Java, Perl, PHP, Python, Ruby. La liste affiche 6
lignes et la ligne HTML est sélectionnée par défaut. Les valeurs
des lignes sont le texte affiché par la ligne.
L'attribut multiple de l'élément select
permet de sélectionner plusieurs lignes dans la liste.
multiple est un attribut booléen qui
n'a pas de valeur : sa présence ou son absence dans la balise
d'ouverture définit la valeur true (présence) ou false
(absence). Le piège est d'écrire :
<select multiple="false"...
Comme multiple est présent, la valeur sera true
et le navigateur ne tiendra pas compte de l'égalité faite dans le
code HTML.
Avec multiple, la sélection des lignes peut se faire en
appuyant sur la touche Ctrl du clavier ou sur la touche Maj.
Si multiple est utilisé, la liste
créée doit être obligatoirement une liste défilante, le seul type
permettant une saisie multiple effective. Si size n'est
pas précisé ou égal à 1, le navigateur créera automatiquement une
liste défilante affichant 4 lignes.
Pour que les ligne sélectionnées puissent être traitées correctement
sur le serveur par un script PHP, il faut que le nom de l'élément select
soit terminé par [] de façon à définir un tableau pour
le script de traitement PHP.
Groupement de lignes
On peut regrouper les lignes d'une liste par catégories. C'est
particulièrement utile quand les listes ont beaucoup de lignes. On
utilise l'élément optgroup
comme conteneur des option
à regrouper.
Le libellé du regroupement est contenu dans l'attribut
label de la balise ouvrante optgroup.
Ce libellé constituera une ligne dans la liste, mais cette ligne ne
sera pas sélectionnable.
Voyages-sncf.com
Voyages-sncf.com
Complétez le code HTML
pour obtenir le résultat ci-contre.
La feuille de style liée à l'exercice (form05.css) fera
automatiquement la mise en forme des éléments fieldset
et legend
Le formulaire utilise la méthode POST pour envoyer les
informations saisies à voyages-sncf.php.
Les listes s'appellent respectivement slcDepart, slcArrivee,
slcAdulte et slcEnfant. Les listes
affichent une seule ligne. Les valeurs des lignes sont le numéro de
la ligne (1, 2, 3, etc), sauf pour la liste slcEnfant
où la numérotation commence à 0.
liste des points de départliste des points d'arrivée