Avatar billede flashdevil Nybegynder
08. marts 2005 - 23:24 Der er 5 kommentarer og
1 løsning

Radio buttons validering

Hejsa

Jeg har dette spørge skema som kommer til at består af en lang række spørgsmål.

Jeg vil gerne ha en validering på som idet midste sig:
"du mangler at udfylde noget".

Men i og med at der kan komme mange spørgsmål, kunne det være fedt hvis man ikke skulle lave det for hvert spørgsmål.

Kan man evt lave en funktion som tjekker dem alle igennem ?

(eksemplet her under har kun et spørgsmål, men det skulle jo så bare gentages mange gange blot med anden tekst.

------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="500" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="500"><form name="form1" method="get" action="recivethink.html">
      <table width="500" height="70" border="0" cellpadding="5" cellspacing="0">
        <tr>
          <td width="20" valign="top"><font size="2" face="Arial, Helvetica, sans-serif">01.</font></td>
          <td width="460" height="50" align="left"><font size="2" face="Arial, Helvetica, sans-serif">Jeg kan godt lide, at en sag er gennemarbejdet inden jeg afleverer den.</font></td>
          <td width="22" align="center" valign="top">&nbsp;</td>
        </tr>
        <tr bgcolor="#F3F3F5">
          <td valign="top">&nbsp;</td>
          <td width="460" height="20" align="left"><label> <font size="2" face="Arial, Helvetica, sans-serif">
            <input type="radio" name="sp1" value="1">
            <font color="#5C5C5C"> helt uenig</font></font></label>
              <font color="#5C5C5C" size="2" face="Arial, Helvetica, sans-serif">
              <label>
              <input type="radio" name="sp1" value="2">
        lidt uenig</label>
              <label>
              <input type="radio" name="sp1" value="3">
        delvis enig</label>
              <label>
              <input type="radio" name="sp1" value="4">
        lidt enig</label>
              <label>
              <input type="radio" name="sp1" value="5">
        helt enig</label>
              </font> <font size="2" face="Arial, Helvetica, sans-serif">
              <label></label>
              </font> <font size="2">
              <label></label>
              </font>
              <label></label>
          </td>
          <td width="22" align="center" valign="top">&nbsp;</td>
        </tr>
      </table>
      <table width="500" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="40" align="center"><input type="submit" name="Submit" value="Resultat">
          </td>
        </tr>
      </table>
    </form></td>
  </tr>
</table>
</body>
</html>
------------------
Avatar billede skovenborg Nybegynder
09. marts 2005 - 00:47 #1
Dette script kræver at dine rækker med spørgsmål starter med det samme i deres navn (fx sp, som i dette tilfælde). På den måde kan du bruge følgende script:
<script type="text/javascript">
function valider(frm,prefix) {
      var valid = true;
      var row = 1;
      elmArr = frm.elements[prefix+row];
      while (typeof elmArr != "undefined") {
            validRow = false;
            for (var i=0;i<elmArr.length;i++) {
                  if (elmArr[i].checked) {
                      validRow = true;
                      break;
                  }
            }
            if (!validRow) {
                  alert("Du skal udfylde spørgsmål "+row);
                  valid = false;
            }
            elmArr = frm.elements[prefix+(++row)];
      }
      return valid;
}
</script>

hver række skal så se ud som denne:
<input type="radio" name="sp2" value="2">
eller
<input type="radio" name="sp3" value="2">
osv.
Avatar billede skovenborg Nybegynder
09. marts 2005 - 00:55 #2
nåja, og du kører den sådan her:
<form name="form1" method="get" action="recivethink.html" onsubmit="return valider(this,'sp');">
Avatar billede flashdevil Nybegynder
09. marts 2005 - 21:33 #3
Hejsa

Det virker bare perfekt...skønt.

Som det er nu så hvis man ikke har udfyldt spg 10,17,27,31,35 som kommer der 5
alert boxe som fortæller at hver enkelt mangler.

Ville det være muligt at man kunne få alertboksen til at skrive:

"Du skal udfylde spørgsmål 10,17,27,31,35". ?

Jeg ved godt det er mere end jeg bad om, så jeg kommer gerne med flerer point hvis det er.
Avatar billede skovenborg Nybegynder
09. marts 2005 - 23:22 #4
det behøves ikke - det er en mindre rettelse. Kan godt forstå det virker lidt irriterende med så mange alertbokse, så her er en lidt udvidet udgave:
<script type="text/javascript">
function valider(frm,prefix) {
      var valid = true;
      var row = 1;
      var outputStr = "Du skal udfylde spørgsmål ";
      elmArr = frm.elements[prefix+row];
      while (typeof elmArr != "undefined") {
            validRow = false;
            for (var i=0;i<elmArr.length;i++) {
                  if (elmArr[i].checked) {
                      validRow = true;
                      break;
                  }
            }
            if (!validRow) {
                  outputStr+= row+",";
                  valid = false;
            }
            elmArr = frm.elements[prefix+(++row)];
      }
      if (!valid) {alert(outputStr.substring(0,outputStr.length-1));}
      return valid;
}
</script>
Avatar billede flashdevil Nybegynder
10. marts 2005 - 14:46 #5
Det virker perfekt.

Tusind tak for hjælpen..smider du lige et svar.
Avatar billede skovenborg Nybegynder
10. marts 2005 - 16:24 #6
jo - værgso'. Og velbekomme :-)
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