Avatar billede laurents Nybegynder
29. marts 2012 - 18:19 Der er 10 kommentarer og
1 løsning

Simpelt valideringsscript "stopper" de forkerte sted.

Hej,

Jeg har brug for et par skarpe øjne - følgende er mit problem ...
Jeg har dette script til at validere nogle form input:

<script language="Javascript">
  function Validate(Form)
    {
      if(form1.navn.value.length == 0)
        {
          alert('Husk at angive navn på medlemmet.');
          form1.navn.focus();
          return false;
        }
               
  if(form1.postnr.value.length == 0)
    {
      alert('Husk at angive postnummer.');
      form1.postnr.focus();
      return false;
    }
                                               
  if(form1.postnr.value!=''&&!form1.postnr.value.match(/^\d{3,4}$/))   
    {       
      alert('Postnummer skal angives med minimum 3 cifre og maksimalt 4 cifre!');
      form1.postnr.focus();
      return false;
    } 
               
  if(form1.klubnr.value == 0)
    {
      alert('Husk at angive hvilken klub medlemmet tilhører.');
      form1.klubnr.focus();
      return false;
    }

  if(form1.fodselsdato.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
    {
      alert('Forkert indtastning. Fødselsdato skal indtastes sådan her: dd-mm-åååå');
      form1.fodselsdato.focus();
      return false;
    }

  if(form1.indmeldt.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
    {
      alert('Forkert indtastning. Indmeldelsesdato skal indtastes sådan her: dd-mm-åååå');
      form1.indmeldt.focus();
      return false;
    }

    return true;
  }       
</script>

Scriptet validerer som sådan ganske fint - MEN - det kører kun til og med valideringen af fodselsdato - herefter skipper scriptet det sidste step - validering af indmeldelsesdatoen ...

Hvad er det jeg ikke kan se, som jeg har gjort galt, som gør at det sidste step ikke køres igennem?

Når jeg sender formen er feltet indmeldelsesdato tomt.... ?

På forhånd tusind tak
Henrik
Avatar billede olsensweb.dk Ekspert
29. marts 2012 - 18:35 #1
du referarer til form1 men din variabel hedder Form
endvidrer bør du sette document foran form1 alle steder da FireFox ellers ikke vil virke

lav det om til følgende: (utested)

function Validate(form1)
    {
      if(document.form1.navn.value.length == 0)
        {
          alert('Husk at angive navn på medlemmet.');
          document.form1.navn.focus();
          return false;
        }
  .......
Avatar billede olsensweb.dk Ekspert
29. marts 2012 - 18:38 #2
ved nærmere eftersyn bruger du slet variablen du overfører
Validate(Form)
Avatar billede laurents Nybegynder
29. marts 2012 - 18:45 #3
Tusind tak for dette - det er hermed rettet til ;-)

Desværre har det ikke løst mit problem - indmeldt bliver stadig ikke valideret - hvad kan der være galt? (der valideres til og med fodselsdato):

if(document.form1.fodselsdato.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
  {
    alert('Forkert indtastning. Fødselsdato skal indtastes sådan her: dd-mm-åååå');
    document.form1.fodselsdato.focus();
    return false;
  }

if(document.form1.indmeldt.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
  {
    alert('Forkert indtastning. Indmeldelsesdato skal indtastes sådan her: dd-mm-åååå');
    document.form1.indmeldt.focus();
    return false;
  }
Avatar billede laurents Nybegynder
29. marts 2012 - 18:46 #4
sorry - jeg så ikke din sidste kommentar.
Jeg forstår ikke helt hvad du mener med "bruger du slet variablen du overfører Validate(Form)" ?
Avatar billede olsensweb.dk Ekspert
29. marts 2012 - 18:59 #5
Validate(Form)
bør bare værer
Validate()

kan du ikke lige vise den html du førsøger at validerer
evt link
Avatar billede laurents Nybegynder
29. marts 2012 - 19:08 #6
hmmm - hvis jeg fjerner "this", ¨så validerer den slet ikke :-(
Jeg får lidt svært ved at poste hele koden - der er 1500 linier eller så - i et lukket system, men jeg kan da lige poste lidt af de jeg tror du gerne vil se:

Scriptet, som det er lige p.t.:
<script language="Javascript">
function Validate(form1)
{
if(document.form1.navn.value.length == 0)
{
alert('Husk at angive navn på medlemmet.');
document.form1.navn.focus();
return false;
}
               
if(document.form1.postnr.value.length == 0)
{
alert('Husk at angive postnummer.');
document.form1.postnr.focus();
return false;
}
                                               
if(document.form1.postnr.value!=''&&!form1.postnr.value.match(/^\d{3,4}$/))   
{       
alert('Postnummer skal angives med minimum 3 cifre og maksimalt 4 cifre!');
document.form1.postnr.focus();
return false;

               
if(document.form1.klubnr.value == 0)
{
alert('Husk at angive hvilken klub medlemmet tilhører.');
document.form1.klubnr.focus();
return false;
}
                   
if(document.form1.fodselsdato.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
{
alert('Forkert indtastning. Fødselsdato skal indtastes sådan her: dd-mm-åååå');
document.form1.fodselsdato.focus();
return false;
}

if(document.form1.indmeldt.value.length != 10 || !this.value.match(/^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/))
{
alert('Forkert indtastning. Indmeldelsesdato skal indtastes sådan her: dd-mm-åååå');
document.form1.indmeldt.focus();
return false;
}


return true;
}       
</script>

og herefter uddrag af formen:

<form method="POST" action="<%=functionpage%>?mode=do_edit" id=name="form1" name="form1" onSubmit="return Validate(this)">
<input type="hidden" value="<%=Rs("id")%>" name="ID">


<input type="text" id="fodselsdato" size="50" name="fodselsdato" value="<%=rs("fodselsdato")%>" style="width:595;">
<input type="text" id="indmeldt" size="50" name="indmeldt"  value="<%=rs("indmeldt")%>" style="width:595;">

<input type="submit" value="Opdater" name="Opdater">

Er dette nok for dig at kigge på?
Avatar billede olsensweb.dk Ekspert
29. marts 2012 - 20:51 #7
id=name="form1" name="form1"
skulle nok være
id="form1" name="form1"

jeg har fjernet valideringen af de felter jeg ikke har med i formen, da js ellers vil fejle, hvilke bevirker at formen bare bliver sendt :(

http://www.the-art-of-web.com/javascript/validate-date/
// regular expression to match required date format re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;


<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
function Validate(frm){
/*   
    if(document.form1.navn.value.length == 0){
        alert('Husk at angive navn på medlemmet.');
        document.form1.navn.focus();
        return false;
    }
             
    if(document.form1.postnr.value.length == 0){
        alert('Husk at angive postnummer.');
        document.form1.postnr.focus();
        return false;
    }
                                             
    if(document.form1.postnr.value!=''&&!form1.postnr.value.match(/^\d{3,4}$/)) {     
        alert('Postnummer skal angives med minimum 3 cifre og maksimalt 4 cifre!');
        document.form1.postnr.focus();
        return false;
    }
             
    if(document.form1.klubnr.value == 0){
        alert('Husk at angive hvilken klub medlemmet tilhører.');
        document.form1.klubnr.focus();
        return false;
    }
*/                 

    // /^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/)
    var re = /^\d{2}-\d{2}-\d{4}$/;

   
    if(document.form1.fodselsdato.value.length != 10 || !document.form1.fodselsdato.value.match(re)) {
        alert('Forkert indtastning. Fødselsdato skal indtastes sådan her: dd-mm-åååå');
        document.form1.fodselsdato.focus();       
        return false;
    }   
   
    if(document.form1.indmeldt.value.length != 10 || !document.form1.indmeldt.value.match(re)){
        alert('Forkert indtastning. Indmeldelsesdato skal indtastes sådan her: dd-mm-åååå');
        document.form1.indmeldt.focus();       
        return false;
    }   
}       
    </script>
</head>
<body>
<form method="POST" action="960314.html?mode=do_edit" id="form1" name="form1" onsubmit="return Validate(this)">
<input type="text" id="fodselsdato" size="50" name="fodselsdato" value="" >
<input type="text" id="indmeldt" size="50" name="indmeldt"  value="" >
<input type="submit" value="Opdater" name="Opdater">
</form>
</body>
</html>
Avatar billede olsensweb.dk Ekspert
30. marts 2012 - 11:42 #8
jeg ville nok lave alle test og udskrive fejl beskeden til sidst, istdet for at stoppe ved den første der fejler
når du nu overfører this kan du lige så godt bruge det til noget
<script type="text/javascript">
function Validate(frm){
    var ErrorCount = 0;   
    var errormsg = Array();
   
/*   
    var frm_name = frm.name;
    if(document[frm_name].navn.value.length == 0){
        errormsg.push('Husk at angive navn på medlemmet.');       
        ErrorCount++;       
    }
*/                 

    // /^([0-3][0-9]-[0-1][0-9]-[1-2][0-9][0-9][0-9])?$/)
    var re = /^\d{2}-\d{2}-\d{4}$/;
   
    if(frm.fodselsdato.value.length != 10 || !frm.fodselsdato.value.match(re)) {
        errormsg.push('Forkert indtastning. Fødselsdato skal indtastes sådan her: dd-mm-åååå');
        ErrorCount++;       
    }   
   
    if(frm.indmeldt.value.length != 10 || !frm.indmeldt.value.match(re)){
        errormsg.push('Forkert indtastning. Indmeldelsesdato skal indtastes sådan her: dd-mm-åååå');
        ErrorCount++;       
    }
   
    // udskrver fejl array
    if(ErrorCount>0){
        var str="";
        // samling af fejl string        
        for(var i=0; i<ErrorCount; i++){
            str=str+errormsg[i]+"\n";
        }       
        alert(str);
    }   
    return (ErrorCount==0)? true : false;   
}       
</script>
Avatar billede laurents Nybegynder
30. marts 2012 - 12:09 #9
Det er FANTASTISK, nu virker alt som det skal ;-)
Tusind tak for al din tid - og tak for, at du har fået mig til at forstå dette lidt bedre!

Mange hils
Henrik
Avatar billede laurents Nybegynder
30. marts 2012 - 12:09 #10
hov, ups, smider du ikke lige et svar, så jeg kan tildele dig nogen point?
Avatar billede olsensweb.dk Ekspert
30. marts 2012 - 12:16 #11
får du her
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