Avatar billede annettef Nybegynder
13. september 2004 - 15:23 Der er 7 kommentarer og
1 løsning

Validering af checkboks og radiobutton.

Hej

Jeg har en form, som jeg har en validering på. Mit problem er, at jeg ikke aner hvordan jeg laver validering på om en checkboks er markeret(skal være markeret/checked) og radiobuttons (en af to skal være valgt).

Yderligere vil jeg gerne i min validering tjekke om telefonnummer indeholder 8 tal og postnummer 4 tal.

Her er min kode:
--------
<%@ Language=VBScript %>
<!-- #include file="db.asp" -->
<!-- #include file="adovbs.inc" -->
<!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil-->
<%

    set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConString

    intOrderID = cstr(Session("orderID"))
%>

<html>
<head>
<title>Kassen - Trin 2 af 3</title>
<Link Rel="stylesheet" href="datronic.css" Type="text/css" > <!-- link til ekstern style sheet -->
<style type="text/css">
<!--
body {
    margin-top: 0px;
    margin-left: 4px;
}
-->
</style>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
-->
</style>

<script type="text/javascript">

function validering(f){
  if(f.strFirst.value==''){
    alert('Du skal udfylde feltet med fornavn!');
    f.strFirst.focus();
    return false;
  }

  if(f.strLast.value==''){
    alert('Du skal udfylde feltet med efternavn!');
    f.strLast.focus();
    return false;
  }

  if(f.strAddress1.value==''){
    alert('Du skal udfylde feltet med adresse!');
    f.strAddress1.focus();
    return false;
  }

  if(f.strPostalCode.value==''){
    alert('Du skal udfylde feltet med postnr!');
    f.strPostalCode.focus();
    return false;
  }

  if(f.strCity.value==''){
    alert('Du skal udfylde feltet med by!');
    f.strCity.focus();
    return false;
  }
 
  if(f.strCountry.value==''){
    alert('Du skal udfylde feltet med land!');
    f.strCountry.focus();
    return false;
  }
 
  if(f.strPhone.value==''){
    alert('Du skal udfylde feltet med telefonnummer!');
    f.strPhone.focus();
    return false;
  }

  if(!f.strEmail.value.match(/^\w.*@\w.*\.\w{2,}$/)){
    alert('Du skal udfylde feltet med e-mail adresse!\n(og det skal være en gyldig adresse)');
    f.strEmail.focus();
    return false;
  }

  return true;
}
</script>


</head>
<body>
<br>
  <table width="490" cellpadding="0" cellspacing="0">
    <tr>
      <td height="18" bgcolor="#545DB9" colspan="2"><span class="style1">Kassen - Trin 2 af 3</span></td>
    </tr>
    <tr>
      <td colspan="2"><p>Kundeoplysninger<br>
        <br>
    </p></td>
  </tr>
    <form action="checkout3.asp" method="post" name="form2" onsubmit="return validering(this);">
            <input type="hidden" name="intOrderID" value="<%=intOrderID%>">
    <tr><td bgcolor="#F2F2FA" colspan="2"><strong>Navn & Adresse </strong></td>
    </tr>
    <tr>
      <td>Navn (For, Efter): </td>
      <td><input type="text" name="strFirst" size="10">
          <input type="text" name="strLast" size="10">
      </td>
    </tr>
    <tr>
      <td>E-mail Adresse: </td>
      <td><input type="text" name="strEmail" size="21">
          &nbsp;F.eks.: mail@datronic.dk </td>
    </tr>
    <tr>
      <td>Gade/vej: </td>
      <td><input type="text" name="strAddress1" size="21">
      </td>
    </tr>
          <tr>
      <td>Postnr</td>
      <td><input type="text" name="strPostalCode" size="5">
      </td>
    </tr>
    <tr>
      <td>By</td>
      <td><input type="text" name="strCity" size="21">
      </td>
    </tr>
    <tr>
      <td>Land</td>
      <td><input type="text" name="strCountry" size="21"></td>
    </tr>
    <tr>
      <td>Telefon</td>
      <td><input type="text" name="strPhone" size="21">
          &nbsp;F.eks.: 86256343 </td>
    </tr>
    <tr>
      <td colspan="2"><hr color="#CCCCCC" size="1" noshade></td>
    </tr>
    <tr bgcolor="F2F2FA">
      <td colspan="2"><strong>Leveringsadresse (hvis anden end kundeadresse)</strong></td>
    </tr>
    <tr>
      <td>Navn(For, Efter): </td>
      <td><input type="text" name="strShipFirst" size="10">
          <input type="text" name="strShipLast" size="10">
      </td>
    </tr>
    <tr>
      <td>Adress: </td>
      <td><input type="text" name="strShipAddress" size="21">
      </td>
    </tr>
    <tr>
      <td>Postnr:</td>
      <td><input type="text" name="strShipPostalCode" size="5">
      </td>
    </tr>
    <tr>
      <td>By:</td>
      <td><input type="text" name="strShipCity" size="21">
      </td>
    </tr>
    <tr>
      <td>Land:</td>
      <td><input type="text" name="strShipCountry" size="21"></td>
    </tr>
    <tr>
      <td colspan="2"><hr color="#CCCCCC" size="1" noshade></td>
    </tr>
    <tr bgcolor="F2F2FA">
      <td colspan="2"><strong>Betalingsform</strong></td>
    </tr>
    <tr>
      <td colspan="2"><font face="Verdana" size="2">
        <input type="radio" name="strBetaling" value="bank" checked>
      Bankoverførelse
      <input type="radio" name="strBetaling" value="efterkrav">
      Efterkrav </font></td>
    </tr>
    <tr>
      <td colspan="2"><hr color="#CCCCCC" size="1" noshade></td>
    </tr>
    <tr><td colspan="2"><input type="checkbox" name="handelbeting" value="handelJa"> Jeg accepterer Datronic ApS' handelsbetingelser - <a href="handelbeting.htm" target="_blank">handelsbetingelser læs her...</a>    <br> </td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" src="grafik/gaa_kassen.gif" name="kassen" value="Gå til kassen">
      </td>
    </tr>
    </form>
  </table>
 
 
  </td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
</body>
</html>
<%       

Conn.Close
set Conn = Nothing
%>
--------

Så det korte af det lange er:

1) hvordan tjekkes det om en checkboks er markeret?
2) hvordan tjekkes det om en af to radiobuttons er valgt?
3) hvordan tjekkes det om feltet strPhone indeholder 8 tal?
4) hvordan tjekkes det om feltet strPostalCode indeholder 4 tal?

Håber nogen kan hjælpe mig  :o)

/Annette
Avatar billede roenving Novice
13. september 2004 - 15:35 #1
-- når du har sat checked i en af radio-knapperne, vil der da altid være mindst een af dem, som er udfyldt ?-)

-- men således:

<script type="text/javascript">

function validering(f){
  if(f.strFirst.value==''){
    alert('Du skal udfylde feltet med fornavn!');
    f.strFirst.focus();
    return false;
  }

  if(f.strLast.value==''){
    alert('Du skal udfylde feltet med efternavn!');
    f.strLast.focus();
    return false;
  }

  if(f.strAddress1.value==''){
    alert('Du skal udfylde feltet med adresse!');
    f.strAddress1.focus();
    return false;
  }

  if(!f.strPostalCode.value.match(/^\d{4}$/)){
    alert('Du skal udfylde feltet med postnr med 4 cifre!');
    f.strPostalCode.focus();
    return false;
  }

  if(f.strCity.value==''){
    alert('Du skal udfylde feltet med by!');
    f.strCity.focus();
    return false;
  }
 
  if(f.strCountry.value==''){
    alert('Du skal udfylde feltet med land!');
    f.strCountry.focus();
    return false;
  }
 
  if(f.strPhone.value.match(/^\d{8}$/)){
    alert('Du skal udfylde feltet med telefonnummer med 8 cifre!');
    f.strPhone.focus();
    return false;
  }

  if(!f.strEmail.value.match(/^\w.*@\w.*\.\w{2,}$/)){
    alert('Du skal udfylde feltet med e-mail adresse!\n(og det skal være en gyldig adresse)');
    f.strEmail.focus();
    return false;
  }
 
  var chckd = false;
  for(i=0;f.strBetaling.length>i;i++)chckd = chckd||f.strBetaling.checked;
 
  if(!chckd){
    alert('Du skal vælge en betalingsform!');
    f.strBetaling[0].focus();
    return false;
  }
 
  if(!f.handelbeting.checked){
    alert('Du skal acceptere Datronic ApS\' handelsbetingelser!');
    f.handelbeting.focus();
    return false;
  }
 
  return true;
}
</script>
Avatar billede roenving Novice
13. september 2004 - 15:36 #2
Argh:

  var chckd = false;
  for(i=0;f.strBetaling.length>i;i++)chckd = chckd||f.strBetaling[i].checked;
Avatar billede annettef Nybegynder
13. september 2004 - 15:53 #3
okay - prøver lige at sætte det ind...

/Annette
Avatar billede annettef Nybegynder
13. september 2004 - 16:44 #4
Nu har jeg sat koden ind, men den tjekker ikke om telefonnummer er på 8 tal...

/Annette
Avatar billede roenving Novice
13. september 2004 - 16:48 #5
-- argh, jeg fik ikke kopieret ordentligt ...

-- så nu giver den fejl, hvis nummeret er på 8 tal ...

-- sådan i stedet:

  if(!f.strPhone.value.match(/^\d{8}$/)){
    alert('Du skal udfylde feltet med telefonnummer med 8 cifre!');
    f.strPhone.focus();
    return false;
  }
Avatar billede annettef Nybegynder
13. september 2004 - 16:50 #6
Super nu virker det - læg et svar, så du kan få point.

/Annette
Avatar billede roenving Novice
13. september 2004 - 16:59 #7
Velbekomme '-)
Avatar billede roenving Novice
13. september 2004 - 17:01 #8
-- og tak for point ;~}
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