25. marts 2002 - 21:14Der 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; }
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.
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?
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; };
<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"> </td><td width="*"> </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"> </td><td width="*"> </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.
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];
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; }
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.