Avatar billede dkkarpen Nybegynder
21. juni 2002 - 12:06 Der er 4 kommentarer og
2 løsninger

Sikre at 2 options vælges i multipel select box

Hvordan ordnes subjekt? Hverken færre eller flere men 2 options.
Avatar billede jakoba Nybegynder
21. juni 2002 - 12:31 #1
Der skal lidt javascript til:

<script type='text/javascript'> <!-- // valider på select-multiple

function netop2Valgt( selObj ) {
    var antalValgt=0;
    for (var i=0; i<selObj.options.length; i++ ) {
        if ( selObj.options[i].selected ) {
            antalValgt += 1;
        }
    }
    return ( antalValgt == 2 );
}; //end netop2Valgt( Select object ) -> boolean

function validerForm ( formObj ) {
    if ( ! netop2Valgt( formObj.selectBoksNavn ) ) {
        alert( "Du har valgt " +antalValgt +"\nDer skal vælges precis 2, ret og prøv igen." );
        selObj.focus();
        return false;  // test fejlede
    }
//  ... diverse andre tests du har
    return true;  // ingen test fejlede. der må submittes.
}; //end validerForm ( Form objekt ) -> boolean

// --> </script>

i dokumentet skrives din formular så som:

<form  action="destination.php" onsubmit="return validerForm( this );">

<select name="selectBoksNavn" multiple>
  <option>...
</select>

...
</form>
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 12:51 #2
Det fejler. Fejl: 'antalValgt' er ikke defineret.
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 12:54 #3
Det er nedenstående linie der fejler.

alert( "Du har valgt " +antalValgt +"\nDer skal vælges precis 2, ret og prøv igen." );
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 13:10 #4
Fjernes antalValgt fra prompten fremkommer samme fejl i linien

        selObj.focus();

Altså Fejl: 'selObj' er ikke defineret.
Avatar billede Slettet bruger
21. juni 2002 - 14:08 #5
Så smider vi bare det hele ind i én funktion (der var lidt vrøvl med globale/lokale variabler:

<html>
<head>
<script>
function validerForm(frm) {
sel = frm.selectBoksNavn;
tj = 0;
for (i = 0; i < sel.options.length; i++) {
if (sel.options[i].selected)
tj++;
}
if (tj != 2) {
alert("Du har valgt " + tj + " mulighed(er)!\nDu skal vælge præcist 2!");
sel.focus();
return false;
}
//Andre tests
return true;
}
</script>
</head>
<body>
<form onSubmit="return validerForm(this);">
<select name="selectBoksNavn" size="8" multiple>
<option value="1">Nr. 1</option>
<option value="2">Nr. 2</option>
<option value="3">Nr. 3</option>
<option value="4">Nr. 4</option>
<option value="5">Nr. 5</option>
<option value="6">Nr. 6</option>
<option value="7">Nr. 7</option>
<option value="8">Nr. 8</option>
</select>
<br>
<input type="submit" value="Send">
</form>
</body>
</html>
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 17:35 #6
perfekt
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