Avatar billede weeelo Nybegynder
26. januar 2007 - 17:50 Der er 4 kommentarer og
1 løsning

Lille konfiguration af dropdown script.

Hej JavaScript-eksperter,

Inden jeg går på weekend vil jeg lige lægge et spørgsmål til jer.

Denne funktion, som roenving har lavet her (http://www.eksperten.dk/spm/576896) vil jeg gerne have modificeret lidt.

Jeg har 7 dropdowns, med 7 ens værdier. Men det skal ikke være muligt at vælge to ens værdier.

Lad os tage et eksempel:

Dropdown1: valg1
Dropdown2: ikke valgt
Dropdown3: valg3
Dropdown4: ikke valgt
Dropdown5: valg2
Dropdown6: ikke valgt
Dropdown7: valg4

Sådan ser valgene ud lige nu. Det er så meningen, at hvis jeg vælger valg4 i en hvilken som helst Dropdown, så vil Dropdown7 blive nulstillet (til ikke valgt), således at det ikke er valgt to steder, osv.

Som det er løst i det spm jeg refererer til, så skal der formentlig nogle id'er på osv., men jeg er desværre ikke den store JavaScript-haj... endnu. Jeg fornemmer dog ikke, at der skal så meget til for at få funktionen til at køre, så hvis pointene er for små, vil de selvfølgelig blive større, hvis det ønskes.

Håber det var nok forklaring.

MVH Weeelo
Avatar billede roenving Novice
27. januar 2007 - 00:49 #1
Øv, jeg kan ikke finde den, jeg har lavet, men der var tilgangsvinklen også, at de valgte options blev fjernet fra de andre selects, og så kunne de først igen vælges, hvis der blev valgt <ikke valgt> !-)
Avatar billede jhe-ting Nybegynder
28. januar 2007 - 04:13 #2
Dette eksempel virker sådan som du ønsker.
Det tilpasser sig automatisk til antallet af dropdown's.
Testet i FF2 og IE6

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<TITLE>Mutual exclusion</TITLE>
<SCRIPT TYPE="text/javascript">
var selectors = [];

function takeThis(e){
    var elm = (e)?e.target:event.srcElement;
    var sel = elm.selectedIndex;
    var idx;
    for (idx in selectors){
        if (elm != selectors[idx] &&  sel == selectors[idx].selectedIndex){
            selectors[idx].selectedIndex = 0;
        }
    }
}

window.onload = function (e){
    if (typeof multiForm == "undefined"){
        var multiForm = document.getElementById("multiForm");
    }
   
    for (var idx = 0; idx < multiForm.elements.length; idx++) {
        if (multiForm.elements[idx].tagName=="SELECT"){
            multiForm.elements[idx].onblur=takeThis;
            selectors.push(multiForm.elements[idx]);
        }
    }
   
}
</SCRIPT>
</HEAD>
<BODY>
Hver valgmulige kan kun bruges et sted
<form name="multiForm" id="multiForm" action=get>
  <select name="dropdown1" id="dropdown1">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown2" id="dropdown2">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown3" id="dropdown3">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown4" id="dropdown4">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown5" id="dropdown5">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown6" id="dropdown6">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
  <select name="dropdown7" id="dropdown7">
    <option value=0> - ikke valgt - </option>
    <option value=1> valg1 </option>
    <option value=2> valg2 </option>
    <option value=3> valg3 </option>
    <option value=4> valg4 </option>
    <option value=5> valg5 </option>
    <option value=6> valg6 </option>
    <option value=7> valg7 </option>
  </select>
</form>

</BODY>
</HTML>
Avatar billede jhe-ting Nybegynder
28. januar 2007 - 04:18 #3
PS: Det var vist mere end en 'lille konfiguration'.  :P
      Måske kan det gøres enklere. Forslag anyone?
Avatar billede weeelo Nybegynder
28. januar 2007 - 14:29 #4
jhe-ting > Det virker præcis som jeg ønskede. Mange tak! Smid du bare et svar, så får du dine point.
Avatar billede jhe-ting Nybegynder
28. januar 2007 - 16:40 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester