Avatar billede sonic666 Novice
26. august 2005 - 14:28 Der er 11 kommentarer og
1 løsning

Formular med valideringsregler

Jeg har brug for en formular til mit website der kan validerer nogle teks-felterne.
De felter jeg har brug for er følgende:

Fornavn*
Efternavn*
Firma
Afdeling
Adresse*
Post-nr.*
By*
Land*
Telefon*
Email*
Momsregistreret (ja/nej)
Moms-nr.
Antal*


Valideringsregler:

Felter med * skal udfyldes.
Momsregistreret skal som default stå til "ja". Hvis ikke der vælges "nej" SKAL firma og moms-nr. udfyldes.
Hvis momsregistreret er valgt til "nej" må man ikke kunne udfylde moms-nr.
Der ud over skal email valideres efter gældende regler.

Håber nogle kan hjælpe mig. Jeg er ikke selv så stærk i java og den slags
Avatar billede roenving Novice
27. august 2005 - 01:51 #1
Tjah, nu har jeg haft spørgsmålet åbent i 2 timer, men har ikke haft energi til at skrive hele dit dokument inklusive validering, selvom det maksimalt ville tage 15 min. ...

-- måske du selv kunne lægge ud med at skrive html-koden, så ville jeg (eller andre !-) måske lettere lige kunne sætte rsten på !o]
Avatar billede sonic666 Novice
29. august 2005 - 15:28 #2
ok
Avatar billede sonic666 Novice
29. august 2005 - 16:23 #3
<html>
<head>
  <title>Formular</title>
</head>

<body>

  <table border="0" cellpadding="0" cellspacing="0">
  <form name="bestil" action ="http://www" method=post onsubmit="return valider();">
    <input type="hidden" NAME="recipient" VALUE="min@email.dk">
    <input type="hidden" NAME="redirect" VALUE="http://www.minside.dk">
    <input type="hidden" NAME="subject" VALUE="Bestilling">
   
    <tr>
    <td>Fornavn:</td>
    </tr>
    <tr>
    <td><input type="text" name="fornavn" size="30"></td>
    </tr>

    <tr>
    <td>Efternavn:</td>
    </tr>
    <tr>
    <td><input type="text" name="efternavn" size="30"></td>
    </tr>

    <tr>
    <td>Firma:</td>
    </tr>
    <tr>
    <td><input type="text" name="firma" size="30"></td>
    </tr>
 
    <tr>
    <td>Afdeling:</td>
    </tr>
    <tr>
    <td><input type="text" name="afdeling" size="30"></td>
    </tr>

    <tr>
    <td>Momsregistreret:</td>
    </tr>
    <tr>
    <td>ja <input type="radio" name="momsregistreret" value="1" checked></td>
    </tr>
    <tr>
    <td>nej <input type="radio" name="momsregistreret" value="2"></td>
    </tr>

    <tr>
    <td>Momsnr.:</td>
    </tr>
    <tr>
    <td><input type="text" name="momsnr" size="30"></td>
    </tr>

    <tr>
    <td>Adresse:</td>
    </tr>
    <tr>
    <td><input type="text" name="adresse" size="30"></td>
    </tr>

    <tr>
    <td>Postnr.:</td>
    </tr>
    <tr>
    <td><input type="text" name="postnr" size="30"></td>
    </tr>

    <tr>
    <td>By:</td>
    </tr>
    <tr>
    <td><input type="text" name="by" size="30"></td>
    </tr>

    <tr>
    <td>Land:</td>
    </tr>
    <tr>
    <td><input type="text" name="Land" size="30"></td>
    </tr>

    <tr>
    <td>Telefon:</td>
    </tr>
    <tr>
    <td><input type="text" name="telefon" size="30"></td>
    </tr>
   
    <tr>
    <td>Email:</td>
    </tr>
    <tr>
    <td><input type="text" name="email" size="30"></td>
    </tr>

    <tr>
    <td>Antal:</td>
    </tr>
    <tr>
    <td><input type="text" name="antal" size="30"></td>
    </tr>
   
    <tr>
    <td><input type="button" value="Send" name="send"></td> 
    </tr>
  </form>
  </table>

</body>
</html>
Avatar billede roenving Novice
29. august 2005 - 17:07 #4
Du havde fået lavet nogle ulovligheder i din html, men denne skulle virke:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <script type="text/javascript">
    function valider(f){
      if(f.fornavn.value == ""){
        alert("Du skal udfylde dit fornavn");
        f.fornavn.focus();
        return false
      }
     
      if(f.efternavn.value == ""){
        alert("Du skal udfylde dit efternavn");
        f.efternavn.focus();
        return false
      }
     
      if(f.adresse.value == ""){
        alert("Du skal udfylde din adresse");
        f.adresse.focus();
        return false
      }
     
      if(f.postnr.value == ""){
        alert("Du skal udfylde dit postnummer");
        f.postnr.focus();
        return false
      }
     
      if(f.by.value == ""){
        alert("Du skal udfylde din by");
        f.by.focus();
        return false
      }
     
      if(f.Land.value == ""){
        alert("Du skal udfylde dit land");
        f.Land.focus();
        return false
      }
     
      if(!f.email.value.match(/^.*?@\w[\w.-]*\.[a-z]{2,6}$/)){
        alert("Du skal udfylde med en gyldig email");
        f.email.focus();
        return false
      }
     
      if(!f.antal.value.match(/^\+?\d+$/)){//Hvis decimaltal tillades skal den ændres en anelse ...
        alert("Du skal udfylde med et antal");
        f.antal.focus();
        return false
      }
     
      if(f.momsregistreret[0].checked && f.firma.value == ""){
        alert("Som momsregistreret skal du angive firmanavn");
        f.firma.focus();
        return false;
      }
     
      if(f.momsregistreret[0].checked && !f.momsnr.value.match(/^\d+$/)){
        alert("Som momsregistreret skal du angive moms-nr.");
        f.momsnr.focus();
        return false;
      }
     
      return true;
    }
  </script>
  <title>Formular</title>
</head>

<body>
  <form name="bestil" action ="http://www" method="post" onsubmit="return valider(this);">
    <input type="hidden" NAME="recipient" VALUE="min@email.dk">
    <input type="hidden" NAME="redirect" VALUE="http://www.minside.dk">
    <input type="hidden" NAME="subject" VALUE="Bestilling">

  <table border="0" cellpadding="0" cellspacing="0">
   
    <tr>
    <td>Fornavn:</td>
    </tr>
    <tr>
    <td><input type="text" name="fornavn" size="30"></td>
    </tr>

    <tr>
    <td>Efternavn:</td>
    </tr>
    <tr>
    <td><input type="text" name="efternavn" size="30"></td>
    </tr>

    <tr>
    <td>Firma:</td>
    </tr>
    <tr>
    <td><input type="text" name="firma" size="30"></td>
    </tr>
 
    <tr>
    <td>Afdeling:</td>
    </tr>
    <tr>
    <td><input type="text" name="afdeling" size="30"></td>
    </tr>

    <tr>
    <td>Momsregistreret:</td>
    </tr>
    <tr>
    <td>ja <input type="radio" name="momsregistreret" value="1" checked onclick="this.form.momsnr.disabled=false;"></td>
    </tr>
    <tr>
    <td>nej <input type="radio" name="momsregistreret" value="2" onclick="this.form.momsnr.disabled=true;"></td>
    </tr>

    <tr>
    <td>Momsnr.:</td>
    </tr>
    <tr>
    <td><input type="text" name="momsnr" size="30"></td>
    </tr>

    <tr>
    <td>Adresse:</td>
    </tr>
    <tr>
    <td><input type="text" name="adresse" size="30"></td>
    </tr>

    <tr>
    <td>Postnr.:</td>
    </tr>
    <tr>
    <td><input type="text" name="postnr" size="30"></td>
    </tr>

    <tr>
    <td>By:</td>
    </tr>
    <tr>
    <td><input type="text" name="by" size="30"></td>
    </tr>

    <tr>
    <td>Land:</td>
    </tr>
    <tr>
    <td><input type="text" name="Land" size="30"></td>
    </tr>

    <tr>
    <td>Telefon:</td>
    </tr>
    <tr>
    <td><input type="text" name="telefon" size="30"></td>
    </tr>
   
    <tr>
    <td>Email:</td>
    </tr>
    <tr>
    <td><input type="text" name="email" size="30"></td>
    </tr>

    <tr>
    <td>Antal:</td>
    </tr>
    <tr>
    <td><input type="text" name="antal" size="30"></td>
    </tr>
   
    <tr>
    <td><input type="submit" value="Send" name="send"></td> 
    </tr>
  </table>
  </form>

</body>
</html>
Avatar billede sonic666 Novice
30. august 2005 - 09:50 #5
Takker mange gang. Den virker perfekt !  ;-) Lige for en ordens skyld, hvad var det fornogle ulovlighedder jeg havde lavet? Vil jo helst undgå at lave dem igen en anden gang.
Avatar billede roenving Novice
30. august 2005 - 11:38 #6
Hvis du kigger på min udgave, vil du se, at jeg har flyttet form-tagget udenfor tabellen, for hvis du skal organisere form-felter i en tabel skal form-tagget omkranse hele tabellen, da det eneste tilladte inde i et tabel-tag er tabel-elementer, alle andre elementer skal enten være inde i celler eller helt udenfor !-)

-- desuden satte jeg den obligatoriske doctype på og for en god ordens skyld også en definition af tegntabellen !o]

-- els velbekomme '-)
Avatar billede sonic666 Novice
30. august 2005 - 13:45 #7
ok. Jeg har lige en rettelse. Hvordan kan man få scriptet til at tillade at der både er tal og bogstaver i moms-nummeret? Den skal næmlig også bruges af udenlanske brugere og det kan lande-koder som DK, DE osv. forekomme
Avatar billede roenving Novice
30. august 2005 - 13:52 #8
Er det kun bogstaver eller er der også f.eks. bindestreger og mellemrum ?-)

Så f.eks. sådan:

      if(f.momsregistreret[0].checked && !f.momsnr.value.match(/^[\da-z -]+$/)){
        alert("Som momsregistreret skal du angive moms-nr.");
        f.momsnr.focus();
        return false;
      }
Avatar billede sonic666 Novice
30. august 2005 - 14:14 #9
Det er nok bedst hvis man må skrive store/små bogstaver sammen med tal, punktum, bindestreg og mellemrum
Avatar billede roenving Novice
30. august 2005 - 14:19 #10
Så ser den sådan ud:

      if(f.momsregistreret[0].checked && !f.momsnr.value.match(/^[\da-z \.-]+$/i)){
        alert("Som momsregistreret skal du angive moms-nr.");
        f.momsnr.focus();
        return false;
      }
Avatar billede sonic666 Novice
30. august 2005 - 14:48 #11
Mange tak! Så kan jeg vist ikke bede om mere ;-)
Avatar billede roenving Novice
30. august 2005 - 14:50 #12
-- og jeg takker 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