Avatar billede oasen Nybegynder
21. december 2002 - 13:26 Der er 15 kommentarer og
1 løsning

Check en enkelt gruppe radios

Jeg kan simpelthen ikke se, hvorfor nedenstående ikke virker. Der skal blot komme en alert, hvis ingen af radioknapperne i gruppen er valgt.


function checkradios() {
    error = 0;
    for (i=0; i<form.pos.length; i++) {
        if (form.pos[i].checked)
            error = i
    }
    if (error == 0) {       
        alert('Indtastningen er ikke korrekt!');
        return false;       
    }
    return true;
}

</head>
<body>

<form name="form" method="post" action="..." onSubmit="return checkradios();">
<input type="radio" name="pos" value="1">
<input type="radio" name="pos" value="2">
(osv...)
</form>
Avatar billede olebole Juniormester
21. december 2002 - 15:12 #1
<ole>

function checkradios(f) {
    error = 0;
    for (i=0; i<f.length; i++) {
        if (f.pos[i].checked==true)
            error = i
    }
    if (error == 0) {       
        alert('Indtastningen er ikke korrekt!');
        return false;       
    }
    return true;
}

<form name="form" method="post" action="..." onSubmit="return checkradios(this);">
<input type="radio" name="pos" value="1">
<input type="radio" name="pos" value="2">
(osv...)
</form>

Og så brug i øvrigt et andet navn til din form. Bruger du 'form' forvirrer du let JS.

/mvh  *<|:o)
</bole>
Avatar billede oasen Nybegynder
21. december 2002 - 18:40 #2
Det virker kun, hvis jeg erstatter "f.length" med "f.pos.length".
Alligevel virker det ikke efter hensigten. For når formen submittes, kommer der en alert, hvis den første radio i gruppen er valgt. (?)
Avatar billede olebole Juniormester
21. december 2002 - 18:59 #3
Selvfølgelig er det 'f.pos.length'  ;o)
Dernæst er det generelt noget vrøvl, jeg har skrevet - sorry.

function checkradios(f) {
    var found = false;
    for (i=0; i<f.pos.length; i++) {
        if (f.pos[i].checked==true) found = true;
    }
    if (!found) {       
        alert('Indtastningen er ikke korrekt!');
        return false;       
    }
    return true;
}
Avatar billede Slettet bruger
22. december 2002 - 11:26 #4
Jeg ville sige, at dette er det optimale! :)

function checkradios(f) {
    for (i=0; i<f.pos.length; i++) {
        if (f.pos[i].checked==true) return true;
    }
    alert('Indtastningen er ikke korrekt!');
    return false;
}
Avatar billede olebole Juniormester
22. december 2002 - 13:17 #5
Ja, jeg har vist svaret lidt med venstre fod her  :D
Avatar billede oasen Nybegynder
22. december 2002 - 15:00 #6
Så virker det, som det skal. Mange tak for hjælpen! Vil I dele?
Avatar billede olebole Juniormester
22. december 2002 - 15:18 #7
Jeg mangler ikke points, så jeg vil hellere lege Julemand  *<|;o)
Avatar billede Slettet bruger
22. december 2002 - 18:00 #8
Øv, jeg vil lege julemand! :(

Under alle omstændigheder bør jeg ikke få point, da jeg bare byggede lidt videre på oleboles svar (hvis man kan sige det på den måde). Og jeg hader, når folk får point for den slags. Så du skal ikke regne med et svar fra mig! :)
Avatar billede oasen Nybegynder
22. december 2002 - 20:37 #9
Hehe... men er du ikke sød at bygge lidt videre igen?
Jeg fandt nemlig lige ud af, at man får en alert, hvis der kun er een radio, uanset om den er valgt eller ej!?
Hvis der er flere radios, fungerer din funktion upåklageligt - men som sagt ikke, hvis der kun er een.

Hvad skyldes det mon?
Avatar billede olebole Juniormester
22. december 2002 - 20:55 #10
Prøv at gøre sådan i stedet:

function checkradios(f) {
    var found = false;
    for (i=0; i<f.length; i++) {
        if (f.elements[i].name=="pos" && f.elements[i].checked==true) found = true;
    }
    if (!found) {       
        alert('Indtastningen er ikke korrekt!');
        return false;       
    }
    return true;
}

Jeg vil foretrække denne version, hvis du vil checke andre formfelter i samme funktion. Skal det være en funktion, der _kun_ checker radios, kan man skrive den sådan (en let omskrivning af phoenixv's):

function checkradios(f) {
    for (i=0; i<f.length; i++) {
        if (f.elements[i].name=="pos" && f.elements[i].checked==true) return true;
    }     
    alert('Indtastningen er ikke korrekt!');
    return false;
}

/mvh
Avatar billede oasen Nybegynder
23. december 2002 - 03:24 #11
Der skal kun tjekkes radios, så jeg benyttede din nederste funktion, og den virker perfekt!! Mange tak begge to :)

Vil du heller ikke have points'ne, olebole?
Avatar billede olebole Juniormester
23. december 2002 - 03:39 #12
"Jingle bells, jingle bells ...... No-Ho-Ho-Ho-Thanx"  *<|;o)
Avatar billede oasen Nybegynder
23. december 2002 - 03:48 #13
Nå, du har travlt med at dele gaver ud, kan jeg høre... (Fortsat) god jul ;-)
Avatar billede olebole Juniormester
23. december 2002 - 03:58 #14
ilm ..... og husk nu lige at rense skorstenen til på tirsdag, tak  ;o)
Avatar billede olebole Juniormester
23. december 2002 - 04:00 #15
Eller emhætten ........ Fanden tage den ny teknologi!  :D
Avatar billede oasen Nybegynder
23. december 2002 - 04:15 #16
Du er jo bindegal, mand... Hehe... Men jeg skal nok rense den i dag.
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

IT-JOB