Avatar billede cawi Nybegynder
10. marts 2003 - 12:19 Der er 8 kommentarer og
1 løsning

Optælling af radio button

jeg er ved at lave et spørgeskema som strækker sig over flere asp-sider. Brugerne har begrænset antal klik tilrådighed, så jeg har brug for en optælling af hver radio group som er trykket, samtidigt skal jeg have antallet overført via en session variabel til næste asp side.
Hver radio group består af 5 valgmuligheder.(60x5) i alt fordelt på 5 sider.
Det hele bliver gemt i en access database, det har jeg styr på.
Håber virklig at der er hjælp at hente, jeg har prøvet (næsten) alt

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html>
<head>
<title>radio-test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" action="">
<table width="391" border="0">
  <tr>
    <td><div align="center">
      <input type="radio" name="button1" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="5">
    </div></td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="radio" name="button2" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="5">
    </div></td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="radio" name="button3" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="5">
    </div></td>
  </tr>
</table>
<p>
  <label></label><label></label>
  <input type="submit" name="Submit" value="Videre til n&aelig;ste sp&oslash;rgsm&aring;l">
  <br>
</p>
</form>

</body>
</html>
Avatar billede Slettet bruger
10. marts 2003 - 16:40 #1
Jeg kan ikke hjælpe dig med dine sessions, det ligger uden for JavaScripts evner, men sådan her tæller du antal valgte radio-grupper:

<script>
function tael(frm) {
  str = "";
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].type == "radio" && str.indexOf("|" + frm.elements[i].name + "|") == -1) {
      str += "|" + frm.elements[i].name + "|";
      for (n = 0; n < frm.elements[i].length; n++)
        if (frm.elements[i][n].checked) {
          t++;
          break;
        }
    }
  }
  return t;
}
</script>

Funktionen returnerer antallet af grupper, der er valgt.
Avatar billede cawi Nybegynder
10. marts 2003 - 18:20 #2
Fantastisk...
Jeg har prøvet at implemtere scriptet men.
Jeg har bare en lille fejl, så virker det helt sikkert.
Felj line 11 elements er null eller ikke et objekt.

<html>
<head>
<title>radio-test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<script>
function tael(frm) {
  str = "";
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].type == "radio" && str.indexOf("|" + frm.elements[i].name + "|") == -1) {
      str += "|" + frm.elements[i].name + "|";
      for (n = 0; n < frm.elements[i].length; n++)
        if (frm.elements[i][n].checked) {
          t++;
          break;
        }
    }
  }
  return t;
}
</script>
<form name="form1" method="post" action="" onSubmit="java script:alert(tael())">
<table width="391" border="0">
  <tr>
    <td><div align="center">
      <input type="radio" name="button1" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button1" value="5">
    </div></td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="radio" name="button2" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button2" value="5">
    </div></td>
  </tr>
  <tr>
    <td><div align="center">
      <input type="radio" name="button3" value="1">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="2">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="3">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="4">
    </div></td>
    <td><div align="center">
      <input type="radio" name="button3" value="5">
    </div></td>
  </tr>
</table>
<p>
  <label></label><label></label>
  <input type="submit" name="Submit" value="Videre til n&aelig;ste sp&oslash;rgsm&aring;l">
  <br>
</p>
</form>

</body>
</html>
Avatar billede cawi Nybegynder
10. marts 2003 - 18:38 #3
Kaldet til funktionen skal selvfølgelig være formen.
Nu er der ingen fejl, men retur værdien er altid 0 ?

<script>
function tael(frm) {
  str = "";
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].type == "radio" && str.indexOf("|" + frm.elements[i].name + "|") == -1) {
      str += "|" + frm.elements[i].name + "|";
      for (n = 0; n < frm.elements[i].length; n++)
        if (frm.elements[i][n].checked) {
          t++;
          break;
        }
    }
  }
  return t;
}
</script>
<form name="frm" method="post" action="" onSubmit="java script:alert(tael(frm))">
Avatar billede Slettet bruger
10. marts 2003 - 22:12 #4
Således skal den kaldes:

<form name="frm" method="post" action="" onSubmit="alert(tael(this));">

P.S. Aldrig "java script:" i en event-handler! :)
Avatar billede cawi Nybegynder
10. marts 2003 - 22:22 #5
Fint med kaldet, men t returnerer stadig 0 selv om jeg trykker på flere radio -button. Efter scriptet at læse, er det så ikke lige meget hvad navne radio button har.?
En anden ting, hvordan får du dine 200 point.?
Avatar billede Slettet bruger
10. marts 2003 - 22:24 #6
Du kan ikke give mig point, før jeg har svaret! :)
Men nu skal jeg jo også lige svare korrekt... Giv mig lige 2 sek.
Avatar billede Slettet bruger
10. marts 2003 - 22:30 #7
Sådan skal funktionen se ud:

function tael(frm) {
  str = "";
  t = 0;
  for (i = 0; i < frm.elements.length; i++) {
    if (frm.elements[i].type == "radio" && str.indexOf("|" + frm.elements[i].name + "|") == -1) {
      str += "|" + frm.elements[i].name + "|";
      grp = frm.elements[frm.elements[i].name];
      for (n = 0; n < grp.length; n++)
        if (grp[n].checked) {
          t++;
          break;
        }
    }
  }
  return t;
}
Avatar billede Slettet bruger
10. marts 2003 - 22:30 #8
Og så svarer jeg! :)
Avatar billede cawi Nybegynder
10. marts 2003 - 22:36 #9
Fantastisk!!!
Så kan jeg endelig sove i nat.
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