Select Multiple sans utiliser CTRL
Bonjour � vous,
J'ai recherch� ici sur le FORUM mais je n'ai pas trouv�.
Le SUJET dit tout. Ce que j'ai trouv� sur le WEB fonctionne bien quand on part de rien dans la liste.
Quand je reviens pour modifier, ce que j'avais enregistr� est s�lectionner dans la liste, mais lorsque je clique sur un autre pour un ajout ce qui �taient s�lectionn�s disparait et je dois tout recommencer � z�ro.
Le dernier script que j'ai est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| // Variables we need
var previous = new Array();
var lastClicked = '';
// We are going to attach event listeners, no code at the bottom or anything hard coded...
function addEvent(obj, evType, fn)
{
if(obj.addEventListener)
{
obj.addEventListener(evType, fn, false);
return true;
}
else if(obj.attachEvent)
{
var r = obj.attachEvent('on' + evType, fn);
return r;
}
else
{
return false;
}
}
// Let's begin when the DOM is ready
addEvent(window, 'load', begin);
// Attach the handlers to our selects
// Attach the handlers to our selects
function begin()
{
var selects = document.getElementsByTagName('select');
for(var i = 0; i < selects.length; i++)
{
if(selects[i].multiple == true)
{
addEvent(selects[i], 'click', whichElement);
addEvent(selects[i], 'click', addRemoveClicked);
}
}
}
// We add a couple of handlers to each
function addSelect(id)
{
var sel = document.getElementById(id);
addEvent(sel, 'click', whichElement);
addEvent(sel, 'click', addRemoveClicked);
}
// Find which element we are looking at on this click
function whichElement(e)
{
if(!e)
{
var e = window.event;
}
if(e.target)
{
lastClicked = e.target;
}
else if(e.srcElement)
{
lastClicked = e.srcElement;
}
if(lastClicked.nodeType == 3) // Safari bug
{
lastClicked = lastClicked.parentNode;
}
}
// Make sure we are displaying the correct items
function addRemoveClicked(e)
{
if(!previous[this.id])
{
previous[this.id] = new Array();
}
// Remember what has been used
if(previous[this.id][lastClicked.value] == 1)
{
previous[this.id][lastClicked.value] = 0;
}
else
{
previous[this.id][lastClicked.value] = 1;
}
var selectBox = document.getElementById(this.id);
// Add correct highlighting
for(var i = 0; i < selectBox.options.length; i++)
{
selectBox.options[i].selected = '';
if(previous[this.id][selectBox.options[i].value] == 1)
{
selectBox.options[i].selected = 'selected';
}
}
} |
Mon Select Multiple est le suivant :
Code:
1 2 3 4 5 6 7 8 9
| select name="invites[]" size="25" multiple="MULTIPLE" id="invites" style="width:250px;">
<?php
do {
?>
<option value="<?= $row_membre['no_membre']; ?>"<?php if (in_array($row_membre['no_membre'], $_SESSION['invites'])) echo "selected='selected'"; ?>><?= stripslashes($row_membre['prenom']) . ' ' . stripslashes($row_membre['nom']); ?></option>
<?php
} while ($row_membre = mysql_fetch_assoc($dem_membre));
?>
</select> |
Ce petit bout de code me permet d'avoir en selection ce qui est enregistr�.
Ceux et celles qui utiliseront cet interface ne sont pas des habitu�s, donc ca doit �tre le plus simple possible.
Merci
Sylvain