19. november 2000 - 20:10Der er
16 kommentarer og 1 løsning
Radio buttons if selected
jeg har lavet dette script som virker ok, men jeg ville gerne have det til kun at regne værdierne sammen hvis radio buttons er selected håber i kan hjælpe
Kim
<script language=\"Javascript\"> function calc() {
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.
function calc() { if (document.forms.dinForm.blokCalc[0].checked == \'true\') { alert(\"Sorry jeg maa ikke beregne når radioknappen er checked\") } else { ... alle dine beregninger } }
Hej JacobA, jeg forstår nogenlunde hvad du mener, men mine radio buttons og ikke tekstfelter der hedder a1 b1 c1 osv, når jeg indsætter: var a1 = (document.forms.test.a1[0].checked)?parseInt(document.test.a1.value):0;
får jeg en fejlmelding, der siger document.forms.test.a1[0].checked er ikke et objekt
Hej JakobA Her er et lille uddrag af min form. Kim
<formname=\"test\"> <form method=\"POST\" name=\"test\"> <div align=\"center\"> <center> <table border=\"0\" cellpadding=\"4\" width=\"86%\"> <tr> <td width=\"108%\" colspan=\"2\"> <hr> <h3 align=\"center\">Skal du danse eller dyrke kampsport?</h3> <hr> </td> </tr> <tr> <td width=\"108%\" colspan=\"2\"><font size=\"2\">Test dig selv!<br> Hvis du har svært ved at finde en sport, som tænder dig og holder dig til ilden? Så kan testen her hjælpe. Den giver dig et fingerpeg om, hvilken motion, der passer til netop dit temperament.</font> <hr> </td> </tr> <tr> <td width=\"108%\" colspan=\"2\"><font size=\"2\"><b>1. Hvordan vil folk beskrive din personlighed?</b></font></td> </tr> <tr> <td width=\"109%\"><font size=\"2\">a. Direkte</font></td> <td width=\"1%\"><input type=\"radio\" name=\"a1\" value=\"1\"></td> </tr> <tr> <td width=\"109%\"><font size=\"2\">b. Venlig</font></td> <td width=\"1%\"><input type=\"radio\" name=\"b1\" value=\"1\"></td> </tr> <tr> <td width=\"109%\"><font size=\"2\">c. Engageret</font></td> <td width=\"1%\"><input type=\"radio\" name=\"c1\" value=\"1\"></td> </tr> <tr> <td width=\"109%\"><font size=\"2\">d. Tilbagetrukket</font></td> <td width=\"1%\"><input type=\"radio\" name=\"d1\" value=\"1\"></td> </tr>
Kan det passe at du ønsker at folk skal klikke på een og kun een af radioknapperne a1, b1, c1 og d1? Og det samme igen med (a2, b2, c2, d2) og (a3, b3, c3, d3), osv? Og så skal der genereres forskellige værdier altefter hvilken knap i 1-gruppen, 2-gruppen, osv der blev klikket på?
Det må være lovligt. Jeg har så brugt tiden til at lære lidt mere om javascript, og har blandt andet fundet ud af at det jeg sagde om at der ikke må være et value=xxx felt i en radio button er forkert (20/11 2000 10:51:22). Det må der godt og den kan ovenikøbet være nyttig.
Men radio knapper behøver IKKE at have forskellige navne. Og den store fidus ved radio knapper er at hvis 2 eller flere radio knapper har samme navn så kan brugeren slet ikke klikke på mere end een af dem. Eller snarere: Hvis han klikker på en af dem forsvinder markeringen på de andre så det altid kun er den sidst klikkede der er checked.
Så nedenfor har jeg skrevet din 1-gruppe som jeg tror den skal være:
Dit første eksempel ser ud som du ønsker at tælle sammen hvor mange har klikket første mulighed (i document.test.reso.value), hvor mange har klikket anden mulighed (i document.test.resa.value), osv
Det kan vi gøre ret nemt med et tælle-op array vi laver til lejligheden:
var res = new Array(0, 0, 0, 0); // opret et array med 4 elementer initieret til 0
for (var i=0; document.forms.test.length > i; i++) { if ( ( document.test[i].type == \"radio\" ) // det skal være en radio-knap &&( document.test[i].checked == true ) ) { // og den skal være valgt res[ document.test[i].value ] +=1; // så tæller vi op for det svar } }; //end of for-løkke
så ender res arrayet med at indeholde en optælling at hvormange \"første svar\" (i res[0]), \"andet svar\" (i res[1]), \"tredie svar\" (i res[2]) og \"fjerde svar\" (i res[3]).
forudsat altså at du har sørget for at alle grupperne har value=\"0\" for første svar, value=\"1\" for andet, osv.
Tilsidst lægger du så værdierne i res arrayet over i dine output variable:
document.test.reso.value = res[0]; // hvormange der valgte første svar document.test.resa.value = res[1]; // hvormange der valgte andet svar document.test.ress.value = res[2]; // hvormange der valgte tredie svar document.test.rese.value = res[3]; // hvormange der valgte fjerde svar
Og så skulle den være der.
Bemærk at vi overhovedet ikke behøver at teste på hvad grupperne hedder. Hvis du blot sørger for at hver gruppe har samme navn vil HTML sørge for at kun een radio knap i den gruppe kan være checked.
Hej JakobA, jeg prøvede med 1 gruppe og 4 knapper, det var ok, så gik det galt da jeg satte det sammen, kan du prøve at lave eks. med 2 knapper hvor det er lige til at kopiere ind i mit dokument
Det må næsten være parametrene oppe i formen den er gal med. de 4 knapper i hver gruppe skal have samme navn, men i næste gruppe skal knapperne have et andet navn. value parametrene på knapperne i hver gruppe skal gå fra 0 til 3.
Så den eneste forskel på grupperne herunder er at navn ændrer sig fra gruppe til gruppe. \"a1\" i første gruppe. \"a2\" i anden og \"a3\" i tredie gruppe.
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.