C'est une petite unité de traitement de la balise <select> en mode sélection multiple, sans prétention particulière, mais comme j'ai eu besoin de ces fonctions au boulot, je me suis dit que ca pourrait servir aussi à quelqu'un d'autre...
Elle comprend 5 fonctions :
- invertselection(formulaire, list); // Inverse une sélection
- selectitems(formulaire, list); // Sélectionne tous les éléments
- deselectitems(formulaire, list); // Délesctionne tous les éléments
- deplaceitems(formulaire, from, to); // Déplace des éléments d'une liste à une autre avec tri
- sortitems(formulaire, list); // trie les éléments par ordre alphabétique de texte (pas par valeur)
Source / Exemple :
/**********************************************/
/* Code Javascript de traitement des <select> */
/* FEREY Damien - 04/06/2003 */
/* Dark Skull Software */
/* http://www.darkskull.net */
/**********************************************/
/****************************/
/* On inverse une séléction */
/****************************/
// formulaire: le formulaire contenant la liste
// list : le nom de la liste
function invertselection(formulaire, list)
{
var items = formulaire.elements[list].options;
for (i = 0; i < items.length; i++)
items[i].selected = !items[i].selected;
}
/********************************************************/
/* Sélectionne les éléments d'une liste dans formulaire */
/********************************************************/
// formulaire: le formulaire contenant la liste
// list : le nom de la liste
function selectitems(formulaire, list)
{
var items = formulaire.elements[list].options;
for (i = 0; i < items.length; i++)
items[i].selected = true;
}
/********************************************************/
/* Sélectionne les éléments d'une liste dans formulaire */
/********************************************************/
// formulaire: le formulaire contenant la liste
// list : le nom de la liste
function deselectitems(formulaire, list)
{
var items = formulaire.elements[list].options;
for (i = 0; i < items.length; i++)
items[i].selected = false;
}
/****************************************************************/
/* Déplace les éléments sélectionnés d'une liste vers une autre */
/****************************************************************/
// formulaire: le formulaire contenant les 2 listes
// from : le nom de la liste dont on veut déplacer les éléments
// to : le nom de la liste qui va recevoir les éléments
function deplaceitems(formulaire, from, to)
{
var src = formulaire.elements[from].options;
var dest = formulaire.elements[to].options;
while (src.selectedIndex >= 0) {
id = src.selectedIndex;
text = src[id].text;
value = src[id].value;
src[id] = null;
dest[dest.length] = new Option(text, value);
}
sortitems(formulaire, to);
}
/******************************************/
/* Tri d'une liste par texte des éléments */
/* (utilise le tri par insertion */
/******************************************/
// formulaire: le formulaire contenant la liste
// list: le nom de la liste à trier
function sortitems(formulaire, list)
{
var items = formulaire.elements[list].options;
if (items.length > 1) {
// Pour tous les éléments à part le dernier
for (i = 0; i < (items.length - 1); i++) {
// On réinitialise les valeurs
smallesttext = '';
smallestid = -1;
// On recherche l'indice de la valeur minimale dans le reste de la liste
for (j = i; j < items.length; j++) {
text = items[j].text;
// On regarde si on est au premier élément, ou alors si on a le plus petit
if ((text < smallesttext) || (smallestid == -1)) {
smallestid = j;
smallesttext = text;
}
}
// Maintenant qu'on a l'indice de la valeur minimale, on effectue l'échange
oldvalue = items[i].value;
oldtext = items[i].text;
smallestvalue = items[smallestid].value;
items[i].value = smallestvalue;
items[i].text = smallesttext;
items[smallestid].value = oldvalue;
items[smallestid].text = oldtext;
}
}
}
Conclusion :
Dark Skull Software
http://www.darkskull.net
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.