Avatar billede djarnis Nybegynder
15. oktober 2002 - 14:18 Der er 9 kommentarer og
1 løsning

Validering ...

Hejsa,

Jeg ku godt bruge lidt hjælp til at validere et par radiobuttons i en formular.

Jeg har 3 forskellige sæt radiobuttons -
1. test1
2. test2
3. test3

I test1 og test2 er der 4 radiobuttons pr. gruppe med værdi 1-4, og i  test3 er der 1 radiobutton med en værdi på 5.

Jeg skal så tjekke at test1 OG test2 er valgt ELLER at test3 er valgt ... Dvs. hvis man har markeret i test3, så er det ikke nødvendigt at markere i test1 og test2, men markerer man ikke i test3 skal der markeres i BÅDE test1 og test2 ....

Nogen forslag? ;)
Avatar billede jakoba Nybegynder
15. oktober 2002 - 14:43 #1
<script type='text/javascript'>

function validerRadio( radioArray ) {
    for (var i=0; i<radioArray.length; i++ ) {
        if ( radioArray[i].checked ) return true;  //der er valgt een
    }
    return false;  // der er ikke valgt nogene
}; //end validerRadio( radioknap array objekt ) -> boolean

function validerTest1Teat2Test3( formElem ) {
    if ( validerRadio( formElem.test3 ) ) return true; // alles gut
        // nix. begge de to andre skal være valgt
    if ( ! validerRadio( formElem.test1 ) ) return false; // sorry
    if ( ! validerRadio( formElem.test3 ) ) return false; // sorry
    return true;  // både test1 og test2 bestod testen
}; //end validerTest1Teat2Test3( Form objekt ) -> boolean

</script>

i din onsubmit kan du så kalde validerTest1Teat2Test3
<form ... onsubmit="return validerTest1Teat2Test3( this );">

mvh JakobA
Avatar billede jakoba Nybegynder
15. oktober 2002 - 14:44 #2
Ups. i nederste  validerRadio kald skal det være test2 og ikke test3
    if ( ! validerRadio( formElem.test2 ) ) return false; // sorry
Avatar billede djarnis Nybegynder
15. oktober 2002 - 14:52 #3
Den virker fint hvis man vælger test1 og test2 ... Men hvis man kun vælger test3 skulle den jo også gerne submitte - det gør den bare ikke ... ?! ;)
Avatar billede jakoba Nybegynder
15. oktober 2002 - 14:57 #4
det skulle den gerne. 
NB det er i den nederste af de linier 3 skal ændres til 2.  ikke i den øverste
Avatar billede djarnis Nybegynder
15. oktober 2002 - 14:59 #5
Ja - sådan her ikk?!

function validerTest1Test2Test3( formElem ) {
    if ( validerRadio( formElem.test3 ) ) return true; // alles gut
        // nix. begge de to andre skal være valgt
    if ( ! validerRadio( formElem.test1 ) ) return false; // sorry
    if ( ! validerRadio( formElem.test2 ) ) return false; // sorry
    return true;  // både test1 og test2 bestod testen
}; //end validerTest1Teat2Test3( Form objekt ) -> boolean

Men det virker bare ikke - når jeg vælger test3 vil den stadig ikke submitte ?! ;)
Avatar billede jakoba Nybegynder
15. oktober 2002 - 15:03 #6
check om navnet på den gruppe radioknapper virkelig er 'test3'
og om den gruppe ligger i samme formular som de to andre.

læg evt testsiden på netttet så vi kan kikke.
Avatar billede djarnis Nybegynder
15. oktober 2002 - 15:06 #7
Du kan lave et html doc med følgende kode og se ;)


<html>
<head>
<script type='text/javascript'>

function validerRadio( radioArray ) {
    for (var i=0; i<radioArray.length; i++ ) {
        if ( radioArray[i].checked ) return true;  //der er valgt een
    }
    return false;  // der er ikke valgt nogene
}; //end validerRadio( radioknap array objekt ) -> boolean

function validerTest1Test2Test3( formElem ) {
    if ( validerRadio( formElem.test3 ) ) return true; // alles gut
        // nix. begge de to andre skal være valgt
    if ( ! validerRadio( formElem.test1 ) ) return false; // sorry
    if ( ! validerRadio( formElem.test2 ) ) return false; // sorry
    return true;  // både test1 og test2 bestod testen
}; //end validerTest1Teat2Test3( Form objekt ) -> boolean


    function uncheckAll(){
        document.survey.test1[0].checked=false;
        document.survey.test1[1].checked=false;
        document.survey.test1[2].checked=false;
        document.survey.test1[3].checked=false;
       
        document.survey.test2[0].checked=false;
        document.survey.test2[1].checked=false;
        document.survey.test2[2].checked=false;
        document.survey.test2[3].checked=false;
    }
   
    function uncheck(){
        document.survey.test3.checked=false;
    }
</script>

</head>

<body>
<form action="aef.htm" method="post" name="survey" id="survey" onsubmit="return validerTest1Test2Test3( this );">
  <p> TEST1
    <input type="radio" name="test1" value="1" onClick="uncheck()">
    <input type="radio" name="test1" value="2" onClick="uncheck()">
    <input type="radio" name="test1" value="3" onClick="uncheck()">
    <input type="radio" name="test1" value="4" onClick="uncheck()">
  </p>
  <p> TEST2
    <input type="radio" name="test2" value="1" onClick="uncheck()">
    <input type="radio" name="test2" value="2" onClick="uncheck()">
    <input type="radio" name="test2" value="3" onClick="uncheck()">
    <input type="radio" name="test2" value="4" onClick="uncheck()">
  </p>
  <p>TEST3
    <input type="radio" name="test3" value="5" onClick="uncheckAll()">
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
</form>
</body>
</html>
Avatar billede djarnis Nybegynder
15. oktober 2002 - 15:21 #8
... Som du kan se er der jo et eller andet galt, ikk? ;)
Avatar billede jakoba Nybegynder
15. oktober 2002 - 15:31 #9
radioknapper er til når der skal vælges een ud af flere. når der kun er en enkelt radioknap i gruppen bliver den en checkbok. og ikke et array:


function validerTest1Test2Test3( formElem ) {
    if ( formElem.test3.checked ) return true; // alles gut
        // nix. begge de to andre skal være valgt
    if ( ! validerRadio( formElem.test1 ) ) return false; // sorry
    if ( ! validerRadio( formElem.test2 ) ) return false; // sorry
    return true;  // både test1 og test2 bestod testen
}; //end validerTest1Teat2Test3( Form objekt ) -> boolean

jeg vil anbefale du også giver den  type="checkbox"  så brugeren slipper for at spilde tid på at lede efter de alternativer det runde felt påstår der er.
og så han kan af-klikke den igen hvis den bliver valgt ved en fejltagelse.

mvh JakobA
Avatar billede djarnis Nybegynder
15. oktober 2002 - 15:39 #10
God pointe ... Synes dog bare at det er bedre at bruge de samme form elementer hele vejen igennem ... ;)
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