Avatar billede jalaboo Nybegynder
07. december 2000 - 11:23 Der er 7 kommentarer og
1 løsning

Validering af form data

Jeg skal bruge et JavaScript der kan validere for nedenstående form.

        <form method=\"post\" action=\"\">

        <input TYPE=\"hidden\" name=\"amount\" value=\"100\">

        Kreditkort nummer:<BR>
        <input TYPE=\"text\" name=\"cardnum\" value=\"\">

        <P>Kreditkort udløbsdato (mm/åå):<BR>
        <input TYPE=\"text\" name=\"emonth\" size=\"2\" MAXLENGTH=\"2\" value=\"\"> /
        <input TYPE=\"text\" name=\"eyear\" size=\"2\" MAXLENGTH=\"2\" value=\"\">

        <P><input TYPE=\"submit\">

        </form>
Avatar billede keysersoze Ekspert
07. december 2000 - 11:29 #1
hvad er det den skal validere? at det kun er tal der indtastes eller hvad?
Avatar billede jalaboo Nybegynder
07. december 2000 - 11:36 #2
\"cardnum\" må kun være tal.
\"emonth\" må kun være tal der er større end 1 og mindre end 12.
\"eyear\" må kun være tal der er større end eller lig med indeværende år.

...ellers er jeg modtagelig overfor forslag.
Avatar billede mkelle1 Nybegynder
07. december 2000 - 13:38 #3
Hej jalaboo

Her er en valideringsfunktion. Jeg håber det var noget i den stil du mente.
Som du ser har jeg gjort årstallet 4-cifret, hvis du insisterer på at det skal være 2-cifret, skal vi have endnu en regel, altså hvor stort det indtastede tal må være før vi tror at det ligger i forrige århundrede.

<script>

function validateform(thisform)
{

    regcardnum = /[0-9]/;

if (!regcardnum.test(thisform.cardnum.value) && !thisform.cardnum.value == \"\")
  {
    alert(\"Du har brugt ulovlige tegn i cardnum.\");
    thisform.cardnum.focus();
      thisform.cardnum.select();
        return (false);
  }
   

if (thisform.emonth.value < 1 | thisform.emonth.value>12)
{
  alert(\"Du har indtastet en ikke eksisterende måned.\");
    thisform.emonth.focus();
      thisform.emonth.select();
    return (false);
  }

 
dato=new Date();
year=dato.getFullYear();

if (thisform.eyear.value < year)
  {
    alert(\"Du har indtastet et år før i år.\");
    thisform.eyear.focus();
      thisform.eyear.select();
        return (false);
  }
}

</script>


<form name=\"cardform\" method=\"post\" action=\"navnet_på_din_side.html\" onsubmit=\"return validateform(this)\">

<input TYPE=\"hidden\" name=\"amount\" value=\"100\">

Kreditkort nummer:<BR>
<input TYPE=\"text\" name=\"cardnum\" value=\"\">

<P>Kreditkort udløbsdato (mm/åååå):<BR>
<input TYPE=\"text\" name=\"emonth\" size=\"2\" MAXLENGTH=\"2\" value=\"\"> /
<input TYPE=\"text\" name=\"eyear\" size=\"4\" MAXLENGTH=\"4\" value=\"\">

<P><input TYPE=\"submit\">

</form>

Jeg har testet det

Mads
Avatar billede jalaboo Nybegynder
07. december 2000 - 14:00 #4
hej Mads,
det ser godt ud!
Vores betalings gateway tillader kun at der er 2 tegn i årstallet, så jeg vil insistere på at det skal være 2-cifret.
:)
Avatar billede mkelle1 Nybegynder
07. december 2000 - 15:00 #5
OK. Så skal du sætte denne her ind i stedet for den oprindelige som validere året. Dermed bliver alle årstal over 50 opfattet som værende år 19xx. (Du kan selvfølgelig ændre det til 80 eller 90 hvis det er godt nok).

if (thisform.eyear.value < (year-2000)| thisform.eyear.value > (year-2000+50))
  {
    alert(\"Du har indtastet et år før i år.\");
    thisform.eyear.focus();
      thisform.eyear.select();
        return (false);
  }

Iøvrigt - hvis der også skal valideres om der overhovedet er tastet noget ind, skal du tilføje følgende til de to sidste validerings-\"if\"er:

      | thisform.xxxx.value==\"\"

Mads
Avatar billede jalaboo Nybegynder
07. december 2000 - 15:31 #6
ok. tak :)
Jeg har ændret scriptet til nedenstående, men har stadig problemer med, at man kan taste et bogstav i cardnum ?!

        function validateform (thisform) {

            regcardnum = /[0-9]/;

            if ((!regcardnum.test(thisform.cardnum.value) && !thisform.cardnum.value == \"\") | thisform.cardnum.value == \"\") {
                alert(\"Du har brugt ulovlige tegn i cardnum.\");
                thisform.cardnum.focus();
                thisform.cardnum.select();
                return(false);
            }

            if (thisform.emonth.value < 1 | thisform.emonth.value > 12 | thisform.emonth.value == \"\") {
                alert(\"Du har indtastet en ikke eksisterende måned.\");
                thisform.emonth.focus();
                thisform.emonth.select();
                return(false);
            }

            dato = new Date();
            year = dato.getFullYear();

            if (thisform.eyear.value < (year-2000) | thisform.eyear.value > (year-2000+50) | thisform.eyear.value == \"\") {
                alert(\"Du har indtastet et år før i år.\");
                thisform.eyear.focus();
                thisform.eyear.select();
                return(false);
            }
        }
Avatar billede mkelle1 Nybegynder
07. december 2000 - 20:56 #7
OK - så må vi lave det den anden vej rundt. Her er så funktionen:

<script>



        function validateform (thisform) {

            regcardnum = /@|£|\\$|€|\\{|\\[|]|}|\\||\\\\|!|\"|#|¤|%|\\/|\\(|\\)|=|\\?|[a-zA-Z]/;

            if ((regcardnum.test(thisform.cardnum.value) | (thisform.cardnum.value == \"\"))) {
                alert(\"Du har brugt ulovlige tegn i cardnum.\");
                thisform.cardnum.focus();
                thisform.cardnum.select();
                return(false);
            }

            if (thisform.emonth.value < 1 | thisform.emonth.value > 12 | thisform.emonth.value == \"\") {
                alert(\"Du har indtastet en ikke eksisterende måned.\");
                thisform.emonth.focus();
                thisform.emonth.select();
                return(false);
            }

            dato = new Date();
            year = dato.getFullYear();

            if (thisform.eyear.value < (year-2000) | thisform.eyear.value > (year-2000+50) | thisform.eyear.value == \"\") {
                alert(\"Du har indtastet et år før i år.\");
                thisform.eyear.focus();
                thisform.eyear.select();
                return(false);
            }
        }

</script>

Herefter tester den for alle bogstaver og besynderlige tegn - hvis der er nogen der mangler kan de sættes ind.

Håber det virker til det du skal bruge det til

Mads
Avatar billede jalaboo Nybegynder
08. december 2000 - 12:18 #8
Mange tak for hjælpen !  :)
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