Unité de traitement de la balise <select> avec tri

Description

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

Codes Sources

A voir également

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.