Avatar billede sth Novice
06. oktober 2006 - 14:47 Der er 14 kommentarer og
1 løsning

Validering af felt indhold

jeg ahr følgende kode, men njeg kan ikke få det til at virke

Feltet skal udfyldes begynde med 3 og skal inde 7 karakterer

hvis dette ikke er muligt så bare noget af det

nå men min kode (den der ikke virker) er :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<script type='text/javascript'> <!--

function valider(f){

  var dato = f.rapport_fra_dato.value,dat;
  if(!dato.match(/^\d{2}-\d{2}-\d{4}$/)){
    alert('Startdatoen er ikke gyldig en gyldig dato');
    f.rapport_fra_dato.select();
    f.rapport_fra_dato.focus();
    return false;
  }else{
    dato = dato.split("-");
    dat = new Date(+dato[2],(+dato[1]-1),+dato[0]);
    if(dat.getFullYear()!=+dato[2]||dat.getMonth()+1!=+dato[1]||dat.getDate()!=+dato[0]){
      alert('Startdatoen er ikke gyldig en gyldig dato');
      f.rapport_fra_dato.select();
      f.rapport_fra_dato.focus();
      return false;
    }
  }
  var dato = f.rapport_til_dato.value,dat;
  if(!dato.match(/^\d{2}-\d{2}-\d{4}$/)){
    alert('Slutdatoen er ikke gyldig en gyldig dato');
    f.rapport_til_dato.select();
    f.rapport_til_dato.focus();
    return false;
  }else{
    dato = dato.split("-");
    dat = new Date(+dato[2],(+dato[1]-1),+dato[0]);
    if(dat.getFullYear()!=+dato[2]||dat.getMonth()+1!=+dato[1]||dat.getDate()!=+dato[0]){
      alert('Startdatoen er ikke gyldig en gyldig dato');
      f.rapport_til_dato.select();
      f.rapport_til_dato.focus();
      return false;
    }
  }
  if(f.rapport_lotnummer.value==""||f.rapport_lotnummer.value==f.rapport_lotnummer.defaultValue){
    alert('Lotnummer skal udfyldes');
    f.rapport_lotnummer.select();
    f.rapport_lotnummer.focus();
    return false;
  }
 
  return true;
}
// --> </script>

</head>
<body>
<form id="sampleform" name="sampleform" action="Gem_rapport_form.asp" method="post" onsubmit="return valider(this);">
<table border="0" width="450" cellspacing="0" cellpadding="0" >

    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Lot nummer:&nbsp;&nbsp;</B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_lotnummer" name="rapport_lotnummer" maxlength="7" type="text" tabindex=4 value="" onfocus="if(this.value==this.defaultValue)this.value='3';" onblur="if(this.value==''||this.value=='3XXXXXX')this.value=this.defaultValue;" size="8"></td>
        <td>

       
    </tr>
</table>
<BR><BR><BR>
<input type="submit" value="Bestil denne rapport" name="Send" style=";"id="knap_nav1">
</form></body>
</html>
Avatar billede roenving Novice
06. oktober 2006 - 17:27 #1
Karakterer ?-)

-- hvilken slags, skal det kun være tal, eller kan andre også indgå ?-)

-- prøv f.eks.

<input id="rapport_lotnummer" name="rapport_lotnummer" maxlength="7" type="text" tabindex=4 value="" onfocus="if(this.value==this.defaultValue)this.value='3';" onblur="if(this.value==''||!this.value.match(/^3\d{7}$/))this.value=this.defaultValue;" size="8">
Avatar billede roenving Novice
06. oktober 2006 - 17:28 #2
-- hov, \d{6} sæ'fø'li' !-)
Avatar billede sth Novice
07. oktober 2006 - 14:56 #3
Hej roenving
jeg beklager at jeg ikke har fået det testet før, men det virker ikke den henter bare siden Gem_rapport_form.asp altså ligesom om der ikke foregår en validering
:o(
Avatar billede sth Novice
09. oktober 2006 - 19:37 #4
Er der ikke nogen der kan hjælpe ? eller  er det bare for svært, eller mangler i en uddybende forklaring ?
Avatar billede roenving Novice
11. oktober 2006 - 17:42 #5
Lyder mærkeligt, kan du ikke lægge et link til et eksempel ?-)
Avatar billede sth Novice
19. oktober 2006 - 22:55 #6
Undskyld ventetiden, jeg har haft for meget at se til.
Nå men til sagen  dette link virker næsten: http://www.halstat.dk/formtest/formtest-1.html
dog tester den ikke på om felt indholdet starter med 3

dette link virker ikke: http://www.halstat.dk/formtest/formtest-2.html
eneste forskel er at jeg ahr fjernet kundenummer, altså hvis jeg har feltet kunde nummer med så får jeg delvis en validering af lotnummer  har jeg ikke kundenummer med for jeg slet ingen validering, jeg fatter det ikke
Avatar billede roenving Novice
22. oktober 2006 - 23:39 #7
Den sidste er der en ganske rimelig forklaring på, for kundenummeret er det eneste, du ikke først tester eksistensen af, så der kommer en javascript-fejl pga. det manglende objekt !-)

Prøv at bruge denne i stedet:

  if  (f.rapport_lotnummer && !f.rapport_lotnummer.value.match(/^3\d{6}$/)){
    alert('Lotnummer skal udfyldes');
    f.rapport_lotnummer.select();
    f.rapport_lotnummer.focus();
    return false;
  }
Avatar billede sth Novice
08. november 2006 - 07:31 #8
hej igen
så lykkes det at få det testet, det hjælper ikke.... jeg fatter det altså ikke.
har du andre forslag?

koden der ikke virker er altså nu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
<script type='text/javascript'> <!--

function valider(f){

  if(!f.rapport_kundenr.value.match(/^00\d{6}$/)){
    alert('Kundenummeret skal have 8 karakterer og starte med 00 ');
    f.rapport_kundenr.select();
    f.rapport_kundenr.focus();
    return false;
  }

 
 
    if  (f.rapport_varenummer && (f.rapport_varenummer.value==""||f.rapport_varenummer.value==f.rapport_varenummer.defaultValue)){
    alert('Varenummer skal udfyldes');
    f.rapport_varenummer.select();
    f.rapport_varenummer.focus();
    return false;
  }


 
 
if  (f.rapport_lotnummer && !f.rapport_lotnummer.value.match(/^3\d{6}$/)){
    alert('Lotnummer skal udfyldes');
    f.rapport_lotnummer.select();
    f.rapport_lotnummer.focus();
    return false;
  }


  var dato = f.rapport_fra_dato.value,dat;
  if(!dato.match(/^\d{2}-\d{2}-\d{4}$/)){
    alert('Startdatoen er ikke gyldig en gyldig dato');
    f.rapport_fra_dato.select();
    f.rapport_fra_dato.focus();
    return false;
  }else{
    dato = dato.split("-");
    dat = new Date(+dato[2],(+dato[1]-1),+dato[0]);
    if(dat.getFullYear()!=+dato[2]||dat.getMonth()+1!=+dato[1]||dat.getDate()!=+dato[0]){
      alert('Startdatoen er ikke gyldig en gyldig dato');
      f.rapport_fra_dato.select();
      f.rapport_fra_dato.focus();
      return false;
    }
  }
  var dato = f.rapport_til_dato.value,dat;
  if(!dato.match(/^\d{2}-\d{2}-\d{4}$/)){
    alert('Slutdatoen er ikke gyldig en gyldig dato');
    f.rapport_til_dato.select();
    f.rapport_til_dato.focus();
    return false;
  }else{
    dato = dato.split("-");
    dat = new Date(+dato[2],(+dato[1]-1),+dato[0]);
    if(dat.getFullYear()!=+dato[2]||dat.getMonth()+1!=+dato[1]||dat.getDate()!=+dato[0]){
      alert('Startdatoen er ikke gyldig en gyldig dato');
      f.rapport_til_dato.select();
      f.rapport_til_dato.focus();
      return false;
    }
  }

 
  return true;
}

// --> </script>

</head>
<body>
<form id="sampleform" name="sampleform" action="Gem_rapport_form.asp" method="post" onsubmit="return valider(this);">

<table border="0" width="450" cellspacing="0" cellpadding="0" >
    <tr>

<!--         <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Kundenummer:&nbsp;&nbsp;</B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_kundenr" name="rapport_kundenr" maxlength="8"type="text"tabindex=1 value="" onfocus="if(this.value==this.defaultValue)this.value='00';" onblur="if(this.value==''||this.value=='00')this.value=this.defaultValue;" size="8"></td>
    </tr>
    <tr>

-->

        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Varenummer:&nbsp;&nbsp;</B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_varenummer" name="rapport_varenummer" maxlength="7" type="text" tabindex=3 value="" size="8"></td>

    </tr>
    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Lot nummer:&nbsp;&nbsp;</B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_lotnummer" name="rapport_lotnummer" maxlength="7" type="text" tabindex=4 value="" onfocus="if(this.value==this.defaultValue)this.value='3';" onblur="if(this.value==''||this.value=='3XXXXXX')this.value=this.defaultValue;" size="8"></td>

    </tr>
</table>
<BR><BR><BR>
<input type="submit" value="Bestil denne rapport" name="Send" style=";"id="knap_nav1">
</form></body>
</html>
Avatar billede roenving Novice
13. november 2006 - 02:19 #9
Der findes jo ikke noget kundenummer, når du har udkommenteret det !-)
Avatar billede sth Novice
13. november 2006 - 15:00 #10
nej men det er også lotnummer jeg ikke kan få til at virke
Avatar billede roenving Novice
16. november 2006 - 01:46 #11
Men koden prøver først at finde kundenummer, og da den ikke kan finde det, stopper kodeudførelsen !-)

-- så da det står i koden, er javascript-maskinen gået ned, før den del af koden kan blive udført !o]
Avatar billede sth Novice
23. november 2006 - 13:14 #12
ok nu tror jeg jeg ahr forstået det..... ja jeg ved jeg ahr været længe om det.

hvis jeg har denne:
if(!f.rapport_kundenr.value.match(/^00\d{6}$/)){
    alert('Kundenummeret skal have 8 karakterer og starte med 00 ');
    f.rapport_kundenr.select();
    f.rapport_kundenr.focus();
    return false;
  }
så skal jeg også have en form der heder kundenr ?

mit problem er at den side jeg har i min form i er dynamisk, den bruges til at hente data der så skal bruges til til at lave nogle kunderapporter med.
Måde jeg finder ud af hvilke felter der skal vises for brugeren er ved at lave nogle opslag i en database, fordelen er så at jeg kan bruge den samme form side til at hente alle rapporter, og for at hente en rapport skal man indstaste både lotnummer og kunde nummer og en anden rapport skal man indtaste varenummer og kundenummer osv.

nogen forslagtil hvordan jeg så tester om et felt indhold er lovlig ?
Avatar billede roenving Novice
27. november 2006 - 03:13 #13
F.eks.

if(f.rapport_kundenr && !f.rapport_kundenr.value.match(/^00\d{6}$/)){
    alert('Kundenummeret skal have 8 karakterer og starte med 00 ');
    f.rapport_kundenr.select();
    f.rapport_kundenr.focus();
    return false;
  }
Avatar billede sth Novice
01. august 2010 - 17:27 #14
roenving: kommer du med et svar så vi kan få denne lukket?
Avatar billede sth Novice
06. januar 2011 - 17:22 #15
lukker
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