25. september 2008 - 12:29
Der er
3 kommentarer
Select onChange mutilple select
Hej eksperter,
Jeg har to selectbokse; den ene har "size=1" og den anden har "size=10 multiple". Når jeg vælger en værdi i select1, så skal den markere x-antal options i select2. Hvis jeg vælger en anden værdi i select1, skal den markere y-antal options i select2 osv...
Har ikke så meget erfaring med java, så jeg håber der er en der har et svar :)
25. september 2008 - 16:51
#1
F.eks.
<script type="text/javascript">
function chooseOpts(sel){
var num = sel.value;
var opts = sel.form.getElementsByTagName("select")[1].options;
for(i=0;10>i;i++)
opts[i].selected = false;
for(i=0;num>i;i++)
opts[i].selected = true;
}
</script>
<form>
<select onchange="chooseOpts(this);">
<option value="0">Vælg antal</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="10">10</option>
</select>
<select size="10" multiple="multiple">
<option>Værdi 1</option>
<option>Værdi 2</option>
<option>Værdi 3</option>
<option>Værdi 4</option>
<option>Værdi 5</option>
<option>Værdi 6</option>
<option>Værdi 7</option>
<option>Værdi 8</option>
<option>Værdi 9</option>
<option>Værdi 10</option>
</select>
</form>
26. september 2008 - 08:54
#2
Så var vi der næsten :)
Den skal ikke bare vælge x-antal fra toppen, men nærmere...
Hvis man fx vælger Administrator, så skal den markere alle, hvis man vælger forfatter skal den vælge fx nr 1, 3 og 6, eller hvis man vælger redaktør skal den måske vælge 2, 3 og 5.
Så alt efter hvilken option man vælger, så skal den vælge et forud defineret og bestemt antal options.
<select>
<option>Administrator</option>
<option>Forfatter</option>
<option>Redaktør</option>
</select>
<select>
<option>Egenskab 1</option>
<option>Egenskab 2</option>
<option>Egenskab 3</option>
<option>Egenskab 4</option>
<option>Egenskab 5</option>
<option>Egenskab 6</option>
</select>
27. september 2008 - 12:07
#3
Så skal vi jo have oplysningerne om, hvad der skal tilknyttes liggende et sted, to indlysende muligheder, i et javascript array, eller som en del af de forskellige options value, jeg ville nok bruge den første, men den anden er lige så nem at bruge:
<option value="administrator;1,2,4,5,8">Administrator</option>
-- så kan du bare sortere det oveflødige fra server-side !-)
Umiddelbart ville jeg lave noget i denne henretning
<script type="text/javascript">
var selOpts = ["1,2,4,5,8","1,3,6","2,3,5,6,9"];
function chooseOpts(sel){
var num = sel.selectedIndex;
var opts = sel.form.getElementsByTagName("select")[1].options;
for(i=0;10>i;i++)
opts[i].selected = false;
if(num>0){
var sels = selOpts[num-1].split(",");
for(i=0,im=sels.length;im>i;i++)
opts[sels[i]].selected = true;
}
}
</script>
<form>
<select onchange="chooseOpts(this);">
<option value="0">Vælg rolle</option>
<option value="administrator">Administrator</option>
<option value="forfatter">Forfatter</option>
<option value="redaktoer">Redaktør</option>
</select>
<select size="10" multiple="multiple">
<option>Værdi 1</option>
<option>Værdi 2</option>
<option>Værdi 3</option>
<option>Værdi 4</option>
<option>Værdi 5</option>
<option>Værdi 6</option>
<option>Værdi 7</option>
<option>Værdi 8</option>
<option>Værdi 9</option>
<option>Værdi 10</option>
</select>
</form>