Avatar billede horizon Nybegynder
13. februar 2007 - 12:52 Der er 3 kommentarer og
1 løsning

radioknapvalidering funker ikke

Jeg sidder og leger lidt med en hjemmeside hvor jeg skal bruge noget formvalidering.

Jeg kan få den til at checke om tekstbokse er udfyldt, om checkbokse er checked, men kan sgu ikke få den til at finde ud af om man har markeret en radioknap

Her er min kode:

* * *

<script type="text/javascript">
       
                function Udfyldt(){
                    if (document.OpretBrugerBeta.Login.value=='' ||
                    document.OpretBrugerBeta.VistNavn.value=='' ||
                    document.OpretBrugerBeta.Adgangskode.value != document.OpretBrugerBeta.Adgangskode2.value ||
                    document.OpretBrugerBeta.Adgangskode.value=='' ||
                    document.OpretBrugerBeta.Adgangskode2=='' ||
                    document.OpretBrugerBeta.Navn.value=='' ||
                    document.OpretBrugerBeta.EPost.value=='' ||
                    document.OpretBrugerBeta.Koen.value=='')
                        document.OpretBrugerBeta.NoedvendigeData.disabled=true
                    else
                        document.OpretBrugerBeta.NoedvendigeData.disabled=false
                }
                if (document.all || document.getElementById)
                setInterval("Udfyldt()",100)
            </script>
                <form action="Login.php" method="post" name="OpretBrugerBeta">
            <strong>Alle felter skal udfyldes</strong>
            <h3><input type="hidden" name="IP" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />Brugeroplysninger</h3>
            <p>Login <br />
                <input type="text" name="Login" size="24" tabindex="1" /></p>
                    <p>Vist navn <br />
                <input type="text" name="VistNavn" size="24" tabindex="2" /></p>
                    <p>Adgangskode<br />
                <input type="password" name="Adgangskode" size="24" tabindex="3" /></p>
            <p>Gentag adgangskode<br />
                <input type="password" name="Adgangskode2" size="24" tabindex="4" /></p>
            <h3>Personlige oplysninger</h3>
                    <p>Navn<br />
                <input type="text" name="Navn" size="24" tabindex="5" /></p>
                    <p>E-Post <br />
                <input type="text" name="EPost" size="24" tabindex="6" /></p>
                    <p>K&oslash;n <br />
                    <p><input type="radio" name="Koen" value="1" tabindex="7" />Mand</p>
                    <p><input type="radio" name="Koen" value="2" />Kvinde</p>
                    <div class="OpretKnapBoks">
                        <p><input type="button" name="Tilbage" onclick="history.go(-1);" id="OpretTilbage" value="&laquo; Tilbage"/><input type="submit" name="NoedvendigeData" id="OpretFortsaet" value="Forts&aelig;t &raquo;" tabindex="8"/></p>
                        <p><input type="submit" name="AnnullerOprettelse" value="Annuller oprettelse!" id="OpretAnnuller" tabindex="10" /><input type="reset" value="Nulstil denne side" id="OpretNulstil" tabindex="9" /></p>
                    </div>
        </form>

* * *

jeg har prøvet med document.OpretBrugerBeta.Koen.value=='' og document.OpretBrugerBeta.Koen.checked==false, men kan ikke få den til at virke
Avatar billede roenving Novice
15. februar 2007 - 13:32 #1
Det er fordi form-felter (deriblandt radios og checkboxe) ligger i arrays, hvis der er mere end een med samme navn !-)

-- i øvrigt er der mange andre ting, der kan kommenteres ...

-- Det er ikke i xhtml muligt at bruge de generelle collections, som f.eks. forms og images m.m., men det lykkes nok, fordi siden i bedste fald fortolkes som (meget !-) fejlfyldt html ...

-- og valideringer bør altid relateres til submit, så den skal tage udgangspunkt i formens onsubmit-event, hvilket så ikke forhindrer at man løbende laver noget check af validiteten ...

-- så f.eks.

<form ... onsubmit="return validering(this);">

-- og:

<script type="text/javascript">
function validering(f){
  if(f.Login.value == ""){
    alert("Du skal angive et login");
    f.Login.focus();
    return false;
  }

...

  if(f.Adgangskode.value == "" || f.Adgangskode2.value == "" || f.Adgangskode.value != f.Adgangskode2.value){
    alert("Du skal angive samme adgangskode 2 gange");
    f.Adgangskode.focus();
    return false;
  }

...

  return true;
}
</script>
Avatar billede roenving Novice
15. februar 2007 - 13:35 #2
-- og hov, radioknapperne:

  if(!f.Koen[0].checked && !f.Koen[1].checked){
    alert("Du skal angive dit køn");
    f.Koen[0].focus();
    return false;
  }

-- men dem vil jeg da anbefale, at du bare sætter den første checked default, for så kan problemet slet ikke opstå !-)
Avatar billede horizon Nybegynder
15. februar 2007 - 15:23 #3
Jeg skriver ikke selv så meget af html xml delen. det klarer golive for mig så det har jeg slet ikke været opmærksom på :-P

Hvorfor skal valideringer først aktiveres ved onsubmit? Er der en speciel grund til dette?

og tak :D
Avatar billede roenving Novice
17. februar 2007 - 14:45 #4
Jeg anbefaler, at du bruger den, bl.a. fordi det er den eneste event, der helt sikkert forekommer før formularen afsendes !-)

Velbekomme '-)
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