Quello è il normale funzionamento dei listbox, anche di windows. Puoi provare questo codice, a tuo rischio (e modifiche).. :)
codice:
var listener = new Object();
listener.selecting = false;
listener.change = function(evt)
{
var index = evt.target.selectedIndex;
if(!this.selecting){
this.ini = index;
} else {
var select = [];
if(index < this.ini){
for(var i = index; i < this.ini + 1; i++)select.push(i);
} else {
for(var i = this.ini; i < index + 1; i++)select.push(i);
}
evt.target.selectedIndices = select;
}
this.selecting = !this.selecting;
};
lista.addEventListener("change", listener);