Forvalgte options i multiple select (a la roenving)
Hi E,Jeg anvender en let modificeret udgave af roenvings helt udmærkede multiple select script til at danne nogle sæt af rullemenuer (http://roenving.users.whitehat.dk/index.html?/WD4Selects-beta.html).
Scriptet virker fint, men jeg har brug for en udvidelse, så jeg udfra et array af værdier kan få scriptet til at selecte (selected=true) et sæt af options ved onload (hvor initSels(); køres, se herunder). Arrayet med de forvalgte værdier svarer til den værdi der i sciptet herunder anvendes som de enkelte options værdier (value). Arrayets størrelse kan være på alt mellem 0 (ingen forvalgt = tomt array) og det maksimale antal selects i en serie.
Følgende er scriptet:
function initSels(){
createOpts('arr1',document.getElementById('in_04_fkPeriodeUI'));
createOpts('arr2',document.getElementById('in_02_fkRaekkeUI'));
}
function createOpts(db,sel){
var s = new Array();
var num = 0
var txt = db;
var ar = opt = null;
var n = sel.selectedIndex;
var args = createOpts.arguments.length;
for(var i=2;args>i;i++){
s[i-1] = document.getElementById(createOpts.arguments[i]);
if(s[i-1]==sel)num=i;
}
if(args>2){
if(s[num])sel = s[num];
else return;
}
if(n==0&&args>2){
for(i=num;args>i+1;i++){
s[i].length = 0;
opt = document.createElement('option');
s[i].appendChild(opt);
opt.value = "NULL";
opt.text = "\74-- Vælg --";
}
return true
};
for(i=1;num>i;i++)
txt+="["+(s[i].selectedIndex-1)+"][1]";
ar = eval(txt);
sel.length = 0;
opt = document.createElement('option');
sel.appendChild(opt);
opt.value = "NULL";
opt.text = "-- Vælg --";
for(i=0;ar.length>i;i++){
opt = document.createElement('option');
sel.appendChild(opt);
if(typeof ar[i] == 'object'){
opt.value = ar[i][0].slice(ar[i][0].lastIndexOf('_')+1);
opt.text = ar[i][0].slice(0,ar[i][0].indexOf('_'));
}else{
opt.value = ar[i].slice(ar[i].lastIndexOf('_')+1);
opt.text = ar[i].slice(0,ar[i].indexOf('_'));
}
}
if(args>num+2){
for(i=num+1;args-2>i;i++){
s[i].length = 0;
opt = document.createElement('option');
s[i].appendChild(opt);
opt.value = "NULL";
opt.text = "\74-- Vælg --";
}
}
}
