Riportiamo alcuni esempi di form che fanno uso di radiobutton o di checkbox. Ambedue gli esempi potrebbero essere la base per costruire un questionario a risposta multipla.

In questo primo esempio sono consentite più risposte ad uno stesso quesito utilizzando i checkbox.

<script language="JavaScript">
var esatte="0101";
function check() {
var punteggio = 0;
for (i = 0; i < 4; i++) {
;var x = eval('document.form1.checkbox'+i+'.checked');
if (x == (esatte.charAt(i) == '1'))
punteggio++;
}
alert("Risposte esatte: " + punteggio + "/4");
}

function check1() {
for (i = 0; i < 4; i++) {
var x = eval('document.form1.checkbox'+i);
x.checked = (esatte.charAt(i) == '1');
}
}
</script>

<form name="form1">
Quali di questi personaggi &egrave; italiano?<br>
<br>
<input type="checkbox" name="checkbox0" value="checkbox">
Renato Cartesio<br>
<input type="checkbox" name="checkbox1" value="checkbox">
Galileo Ferraris<br>
<input type="checkbox" name="checkbox2" value="checkbox">
Annibale Barca<br>
<input type="checkbox" name="checkbox3" value="checkbox">
Ettore Schmitz<br>
<br>
<input type="button" name="Controllo" value="Controlla" onClick="check()">
<input type="button" name="Risposte" value="Vedi le risposte esatte" onClick="check1()">
</form>

In questo secondo esempio è consentita una sola risposta per ogni domanda. Il punteggio è calcolato nella maniera "classica" e cioè:

  • -1 punti per una risposta sbagliata,
  • 0 punti se non viene data alcuna risposta,
  • n-1 (con n il numero delle risposte) se la risposta è esatta.

Un esempio completo può essere trovato all'indirizzo: http://www.itaer.it/lavori/schede/test.htm

<script language="JavaScript">
<!--
var ntests = 2;
var esatte="DB";

function test() {
var punteggio = 0;
var maxp = 0;

for (i = 0; i < ntests; i++) {
var elem = eval("document.form1.radio" + (i + 1));
var answer = eval("document.form1.answ" + (i + 1));
var n = esatte.charCodeAt(i) - 65;
for (j = 0; j < elem.length; j++) {
  if (elem[j].checked)
   break;
}
answer.checked = false;
maxp += elem.length - 1;
if (j < elem.length) {
  if (n == j) {
   punteggio += elem.length - 1;
   answer.checked = true;
  }
  else
   punteggio--;
}
}
  alert("Il tuo punteggio è: "+ punteggio +" / " + maxp);
}

function testv() {
for (i = 0; i < ntests; i++) {
  var elem = eval("document.form1.radio" + (i + 1));
  var j = esatte.charCodeAt(i) - 65;
  elem[j].checked = true;
}
}
// -->
</script>

<form name="form1">
<table width="100%" border="0" cellspacing="0" cellpadding="8" align="center">
 <tr>
  <td bgcolor="#E8E8FF" nowrap valign="top">1</td>
  <td bgcolor="#E8E8FF" valign="top">Se in uno stesso mese tre
  domeniche sono cadute in giorni pari, che giorno della settimana &egrave; stato il 20 di quel mese?</td>
 </tr>
 <tr bgcolor="#FFFFFF">
  <td valign="top">
   <input type="checkbox" name="answ1">
  </td>
  <td>
   <table align="center" width="90%" cellpadding="2">
    <tr>
     <td>
      <input type="radio" name="radio1" value="radiobutton">
luned&igrave;</td>
     <td>
      <input type="radio" name="radio1" value="radiobutton">
marted&igrave;</td>
     <td>
      <input type="radio" name="radio1" value="radiobutton">
mercoled&igrave;</td>
     <td>
      <input type="radio" name="radio1" value="radiobutton">
gioved&igrave;</td>
     <td>
      <input type="radio" name="radio1" value="radiobutton">
altro giorno</td>
    </tr>
   </table>
   <br>
  </td>
 </tr>
 <tr>
  <td valign="top" nowrap bgcolor="#E8E8FF">2</td>
  <td bgcolor="#E8E8FF" valign="top">La somma di tre numeri interi
  positivi dispari &egrave;:</td>
 </tr>
 <tr bgcolor="#FFFFFF">
  <td valign="top">
  <input type="checkbox" name="answ2">
  </td>
  <td>
   <table width="90%" align="center">
    <tr valign="top">
     <td>
      <input type="radio" name="radio2" value="radiobutton">
     </td>
     <td>un numero primo</td>
     <td>
      <input type="radio" name="radio2" value="radiobutton">
     </td>
     <td>un numero dispari</td>
     <td>
      <input type="radio" name="radio2" value="radiobutton">
     </td>
     <td>un multiplo di tre</td>
     <td>
      <input type="radio" name="radio2" value="radiobutton">
     </td>
     <td>divisibile almeno per uno dei tre addendi </td>
     <td>
      <input type="radio" name="radio2" value="radiobutton">
     </td>
     <td>uguale ad una potenza di base dispari</td>
    </tr>
   </table>
   <br>
  </td>
 </tr>
</table>
<br>
<br>
<center>
  <input type="button" name="Submit" value="Controlla le tue risposte" onClick="test()">
  <input type="button" name="Verifica" value="Le risposte esatte" onClick="testv()">
</center>
</form>

Per scaricare questa pagina in formato Word (zip 22 kb) clicca qui.