Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:14 Der er 23 kommentarer og
1 løsning

Se om nogle radio er checked

Jeg har en form som bliver valideret. Hvordan laver man sådan at hvis en gruppe radio ikke har nogen value, altså ingen er valgt, så kommer der en besked?

Har prøvet med:
  if (theForm.gruppe.value == "")
  {
    alert("Besked.");
    theForm.gruppe.focus();
    return false;
  }
Avatar billede rfogh Nybegynder
25. marts 2002 - 21:18 #1
hvad med form.gruppe == false?  (bare et gæt...)
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:21 #2
Du gætter ikke godt nok :-)
Avatar billede rfogh Nybegynder
25. marts 2002 - 21:24 #3
hehe :)
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:25 #4
Prøv igen
Avatar billede rfogh Nybegynder
25. marts 2002 - 21:29 #5
.value == false, så? :)  eller noget...
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:31 #6
Ene gang til...
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:51 #7
Nå, rfogh gætter ikke så godt. Er der andre som har lyst til at gætte med?
Avatar billede rfogh Nybegynder
25. marts 2002 - 21:55 #8
:)
Avatar billede jakoba Nybegynder
25. marts 2002 - 21:56 #9
IE sætter en .value svarende til den valgte radioknap. hvis der er en der er valgt. Det er ikke standard og ingen andre gør det.

hvis gruppe er navnet på den flok radioknapper der skal checkes er det mere korrekt at gå gruppe arrayet igennem og selv se om en af knapperne er valg:


  var rArray = theForm.gruppe.value;
  for (var i=0; i<rArray.length; i++ ) {
      if ( rArray[i].checked ) {
          return i; // nr på valgte knap (0..N)
      }
  }
  return -1;  // ingen knap valgt

du kan naturligvis også vælge at returnere den valgte knaps .value, men så løber du ind i samme problem som IE. Hvad skal der returneres når der slet ikke er valgt nogen?

mvh JakobA
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 21:59 #10
Findes der ikke en la Cour her på Eksperten.dk, som gætter lidt bedre end rfogh?
Avatar billede jakoba Nybegynder
25. marts 2002 - 21:59 #11
Ups.  for meget cutand paste. Der skal IKKE stå .value i linien:

  var rArray = document.theForm.gruppe;

til gengæld er det en god vane at skrive document. foran, for at sikre adresseringen af formen vil blive forstået af andre end IE.
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 22:10 #12
jakoba - Prøv at lav det så det passer helt. Altså hvis ikke nogle er valgt så:
    alert("Besked.");
    theForm.gruppe.focus();
    return false;
Avatar billede jakoba Nybegynder
25. marts 2002 - 22:17 #13
ok

function checkRadiogruppe( gruppenavn ) {
    var rArray = document.theForm.elements[gruppenavn];
    for (var i=0; i<rArray.length; i++ ) {
        if ( rArray[i].checked ) {
            return true; // der er en knap valgt.
        }
    }
    alert("Besked.");
    rArray[0].focus();
    return false;  // ingen knap valgt
}; //end checkRadiogruppe( string ) -> boolean

nu får du så kun at vide ok / not ok

mvh JakobA
Avatar billede m-koldsgaard Nybegynder
25. marts 2002 - 22:27 #14
Det virker altså ikke helt, men ses i morgen.
Avatar billede jakoba Nybegynder
25. marts 2002 - 22:53 #15
Avatar billede m-koldsgaard Nybegynder
26. marts 2002 - 12:45 #16
Ja, det virker hos dig, men ikke hos mig.
Nu har jeg så klippet noget af mit kode ud og sat det ind i din, men det virker ikke. Jeg får en fejl om at det er null.


Her er koden:

<HTML>
<HEAD>
<TITLE>Test om en af radioknapperne i en gruppe er valgt</TITLE>

<script language="JavaScript">
<!--
function checkRadiogruppe( gruppenavn ) {
    var rArray = document.theForm.elements[gruppenavn];
    for (var i=0; i<rArray.length; i++ ) {
        if ( rArray[i].checked ) {
alert( "i " +gruppenavn +" har du valgt '" +rArray[i].value +"'." ); // debuglinie. fjern efter test.
        }
    }
    alert("Du har ikke valgt noget i gruppen " +gruppenavn +"." );
    rArray[0].focus();
    return false;  // ingen knap valgt
}; //end checkRadiogruppe( string ) -> boolean



function validate(theForm)
{

if ( checkRadiogruppe('Login') )
{
alert('alt er ok');
}
else
{
alert('noget skal udfyldes');
return false;
};

return true;

//-->
</script>
<!--



// -->

</HEAD>
<BODY>

<form action="#" method="post" name="Indstillinger" onsubmit="return validate(this)">

<table width="*" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td width="40" align="center" valign="top">
        <input type="radio" name="Login" value="Glem" tabindex="7">
    </td>
    <td width="*" align="left" valign="top">
        - Lad være med at gemme oplysningerne.
        <br>
        Der bliver <i>ikke gemt</i> oplysninger om Deres brugernavn eller adgangskode på computeren.
        <br>
        Denne indstilling kan anbefales, hvis der er andre der benytter computeren.
    </td>
</tr>
<tr><td width="40">&nbsp;</td><td width="*">&nbsp;</td></tr>
<tr>
    <td width="40" align="center" valign="top">
        <input type="radio" name="Login" value="Udfyld" tabindex="8">
    </td>
    <td width="*" align="left" valign="top">
        - Automatisk udfyldning.
        <br>
        Denne indstilling <i>vil gemme</i> brugernavn og adgangskode i en lille fil på computeren.
        <br>
        Næste gang De kommer ind på siden, vil brugernavn og adgangskode være udfyldt i login felterne.
    </td>
</tr>
<tr><td width="40">&nbsp;</td><td width="*">&nbsp;</td></tr>
<tr>
    <td width="40" align="center" valign="top">
        <input type="radio" name="Login" value="Auto" tabindex="9">
    </td>
    <td width="*" align="left" valign="top">
        - Automatisk login.
        <br>
        De vil fremover, når de kommer ind på siden være logget på.
        <br>
        Denne indstilling kan anbefales, hvis der ikke er andre der benytter computeren.
    </td>
</tr>
</table>
<input type="submit" value="Opdater" class="Button" tabindex="22">
</form>

</BODY>
</HTML>



Hvad gør jeg forkert? Jeg synes selv det ser rigigt ud.
Avatar billede jakoba Nybegynder
26. marts 2002 - 12:55 #17
Det er meningen at 'theForm' i linien
    var rArray = document.theForm.elements[gruppenavn];
skal være det navn du giver DIN form (dvs 'indstillinger'
prøv:
    var rArray = document.indstillinger.elements[gruppenavn];

ellers ser det helt rigitgt ud.

mvh JakobA
Avatar billede m-koldsgaard Nybegynder
26. marts 2002 - 12:59 #18
Det giver samme fejl.
Avatar billede jakoba Nybegynder
26. marts 2002 - 13:24 #19
Ups. dit navn 'Indstillinger' starter med stort I , der skal staves helt ens begge steder.
Avatar billede m-koldsgaard Nybegynder
26. marts 2002 - 13:26 #20
Jeg prøvede med stort I.
Avatar billede jakoba Nybegynder
26. marts 2002 - 13:51 #21
linien
    return true; // der er en knap valgt.

var forsvindet fra funktionen. Den kan ikke undværes. Det er alerten ovenover der er til debug.

ellers virker det da fint når jeg udskifter 'theForm' med 'Indstillinger' i den der linie.

mvh JakobA
Avatar billede m-koldsgaard Nybegynder
26. marts 2002 - 13:57 #22
Så prøv at skrive alt koden, hvor mit eks. med Login virker. Husk det hele skal køres gennem validate funktionen, så også kan putte andre ind som fx:
  if (theForm.Brugernavn.value == "")
  {
    alert("Skriv et brugernavn.");
    theForm.Brugernavn.focus();
    return false;
  }
Avatar billede jakoba Nybegynder
26. marts 2002 - 14:12 #23
Avatar billede m-koldsgaard Nybegynder
26. marts 2002 - 14:21 #24
Mange gange tak!!!
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