Jeg vil gerne have at når man f.eks. har valgt nr. 2 i første drop-down-box, så kan der kun vælges 1, 3 eller 4 fra den anden boks. Har man i første boks valgt 4, er der i anden boks kun mulighed for at vælge 1, 2 eller 3. osv. og det skal jo helst gå begge veje. Kan det ikke løses vha. et lille stykke java-script ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan også lave et script der gør de umulige valg usynlige, vha display:none/block Noget ala function change(el); if (el.value == 1) { document.all.id1.style.display=\'none\'; document.all.id3.style.display=\'none\'; } if (el.value == 2) { document.all.id2.style.display=\'none\'; document.all.id4.style.display=\'none\'; } } </script> <select onChange=\"change(this);\" name=\"boks1\"> <option name=\"1\" value=\"1\">1 <option name=\"2\" value=\"2\">2 <option name=\"3\" value=\"3\">3 <option name=\"4\" value=\"4\">4 </select>
Tak for de gode forslag. Jeg kan dog ikke helt se hvad meningen er med jakoba´s sidste forslag. Jakoba´s første forslag kunne jeg sagtens få til at virke, og virker da også næsten som det skal. Jeg ville dog gerne have at de ulovlige valg slet ikke vises på listen. Er det ikke muligt ? Jeg kunne selvfølgelig også lave det med check-bokse, det ville nok være mere simpelt, tror i ikke?
Tusind tak for dit grundige arbejde jakoba. Dog får jeg en fejl i den sidste af nedenstående kodelinier. Når jeg vælger et tal i en af boksene kommer Internet Explorer med en script error. Den siger \"object required\"
function checkOK( sel, nr ) { var other = 3-nr; var sot = sel.form.elements[huskN[other]];
Håber ikke jeg er til alt for meget besvær , jeg er meget nybegynder mht. java-script.
Hum: det er muligt den bliver tilfreds hvis du siger:
var sot = sel.form[huskN[other]];
men kræver en del testing før jeg er sikker. og det er sengetid nu, så du må vente lidt.
prøv evt at sætte en midlertidig alert ind for at debugge: alert( \"nr harværdien \"+nr ); den skal have værdien 1 eller 2, ingen andre værdier er tilladt.
og nej. det er ikke besvær, det er sjov (som dagløn betragtet er points ikke meget værd, det er lysten der driver værket:)
Det ser ikke rigtigt ud til at virke, og debugging-alerten returnerer 1 eller 2 hvilket jo er fint nok. Men jeg kan godt vente. Endnu engang tak for hjælpen jakoba.
var huskB = new Array( -10, -10, -10 ); var huskO = new Array( 0, new Option(), new Option() ); var huskN = new Array( 0, \"boks1\", \"boks2\" );
function checkOK( sel, nr ) { // fjern selected i anden boks var sot = sel.form.elements[huskN[3-nr]]; // den anden boks var soto = sot.options; var i;
if ( huskB[nr] >= 0 ) { // reinsert gammel i anden select sot.options[soto.length] = new Option( ); for ( i=soto.length-1; i>huskB[nr]; i-- ) copyOption( soto[i], soto[i-1] ); copyOption( soto[i], huskO[nr] ); // restore forrige valg if ( sot.selectedIndex>=i ) sot.selectedIndex += 1; };
i = huskB[nr] = sel.selectedIndex; // husk ny værdi // korriger i tilfælde af der mangler et valg i egen boks if ( huskB[3-nr]>0 && i>=huskB[3-nr] ) i = huskB[nr] = i+1;
// fjern dette valg i anden select if ( sot.selectedIndex >= i ) sot.selectedIndex -= 1; copyOption( huskO[nr], soto[i] ); // gem dette valg for ( ; sot.options.length-1 > i; i++ ) copyOption( soto[i], soto[i+1] ); soto.length = soto.length-1; }; //end checkOK( select Object, number )
var huskB = new Array( -10, -10, -10 ); var huskO = new Array( 0, new Option(), new Option() ); var huskN = new Array( 0, \"boks1\", \"boks2\" );
function checkOK( sel, nr ) { // fjern selected i anden boks var sot = sel.form.elements[huskN[3-nr]]; // den anden boks var soto = sot.options; var i; // reinsert forrige valg i den anden select ( if any ) if ( huskB[nr] >= 0 ) { i = soto.length; soto[i] = new Option( ); while ( i>huskB[nr] ) copyOption( soto[i], soto[--i] ); copyOption( soto[i], huskO[nr] ); // restore forrige valg if ( sot.selectedIndex>=i ) sot.selectedIndex += 1; };
// korriger i tilfælde af der mangler et valg i egen boks if ( 0>huskB[3-nr] || huskB[3-nr]>sel.selectedIndex ) i = huskB[nr] = sel.selectedIndex else i = huskB[nr] = sel.selectedIndex+1;
// fjern dette valg i anden select if ( sot.selectedIndex >= i ) sot.selectedIndex -= 1; copyOption( huskO[nr], soto[i] ); // gem dette valg while ( soto.length-1>i ) copyOption( soto[i], soto[++i] ); soto.length = soto.length-1; }; //end checkOK( select Object, number )
// --> </script>
</head> <body>
<form name=\'formen\'> <p>Når et punkt vælges i den ene selektboks forsvinder det i den anden.
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.