Guten Tag,
Ich habe zurzeit zwei <select> boxen, welche wie folgt aufgebaut sind:
<form name="MeineForm">
<select name="OrtVon" size="7" style="width: 100%;" ondblclick="javascript:Move('SpoSearchForm', 'OrtVon', 'OrtAn', document.forms['MeineForm'].elements['OrtVon'].selectedIndex);">
<option value="1">Luzern</option>
<option value="2">Zürich</option>
</select>
<select name="OrtAn" size="7" style="width: 100%;" ondblclick="javascript:Move('SpoSearchForm', 'OrtAn', 'OrtVon', document.forms['MeineForm'].elements['OrtVon'].selectedIndex);">
</select>
</form>
Es können jeweils mit einem Double-Klick die einzelnen Werte von "OrtVon" nach "OrtAn" und umgekehrt verschoben werden.
Beim Verschieben der Werte von "OrtVon" nach "OrtAn" muss ich die Werte im Feld "OrtAn" anschliessend mit folgendem Skript alphabetisch sortieren:
/**
* @desc Sortiert eine Selectliste nach Alphabet
*
* @param string SpoForm
* @param string SpoElement
* @return void
*/
function SpoElementSortlist(SpoForm, SpoElement) {
try{
var obj = document.getElementById(SpoElement);
var values = new Array();
for(var i = 0; i < obj.options.length; i++) {
values.push(obj.options[i].innerHTML + "--xx--" + obj.options[i].value);
}
values = values.sort();
for(var i = 0; i < values.length; i++) {
valueArray = values[i].split('--xx--');
obj.options[i].innerHTML = valueArray[0];
obj.options[i].value = valueArray[1];
}
}
catch(e){
//alert('Fehler: ' + SpoElement);
}
}
Leider ist dies nicht performant genug, da es unter umständen tausende von Einträgen geben kann.
Habt ihr eine schnellere oder einfachere Lösung?
Grüsse
Julien