22. september 2009 - 11:35Der er
13 kommentarer og 1 løsning
Validering giver fejl
jeg har en kode der ligner nedenstående ASP-kode, det er ikke den rigtige kode men den giver mig samme fejl
som i kan se så har jeg en rutine der undersøger om jeg skal bruge dato input (if rapport_dato = 1 then) hvis den <> 1 vises dato felter ikke og så langt så godt
men når jeg så ikke viser dato felter så laves der aligevel en validering af datofelt jeg får denne fejl:
Fejl: 'rapport_fra_dato.value' er null eller ikke et objekt
Er der nogle kloge hoveer der kan svare på hvordan jeg undgår det ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD>
<BODY> <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; }
Linjen giver ikke nogen mening, hvad det skulle have været kan jeg ikke sige, det nærmeste jeg kan komme er at hvis du fjerner ,dat så ser det ud til at give mening.
Men koden er altså gennemgående lidt for klyttet til at jeg tør pille ved den.
ebusiness >> Du vrøvler! Linjen giver al den mening, man kan ønske sig! Den erklærer to variabler, hvor den ene dato sættest til f.rapport_fra_dato.value og den anden dat blot erklæres som 'undefined'.
sth >> Prøv at lægge et link til siden i to tilstande, så man kan se, hvad der skrives ud til browseren i begge situationer
Nu må jeg lige tage mig sammen, den del var sådan set ok, om end skrevet på en lidt kryptisk måde. Problemet er (selvfølgelig) at du fjerner felter i ASP koden, men når du ikke samtidig fjerner JavaScript koden til at tjekke de felter så går det galt. Du skal bare sørge for at fjerne det tilsvarende stykke JavaScript når du fjerner et input felt.
Jeg kom til at læse det som dato = (f.rapport_fra_dato.value,dat) , og så giver det ikke så meget mening. Det er sjovt så svært det kan være at læse andre folks kode.
ebusiness ja du har ret det var også det jeg tænkte på i aftes da jeg ikke kunne sove... og det er så prøvet nu og det virker.... men så har jeg jo et problem med det felt der heder lot nummer, jeg har så prøvet at lve det samme for den, altså flytte JavaScript på denne og det virker så kun hvis jeg ikke bruger dato
men jeg kunne nemt komme ud for at skulle bruge både dato og lot nummer hvordan kan jeg lave en validering hvor det er muligt at have på både dato og lotnumer?
Prøv at beholde din script blok i head sektionen, og brug ASP til at fjerne de dele af JavaScript funktionen som ikke skal bruges. Du kan ikke have to funktioner med samme navn som i test3. I test2 har du bare skrevet f1 i stedet for f2.
Tak for dit svar, så er vi der næsten det du skriver oversætter jeg til følgende:
<script type="text/javascript">
function valider(f) <% if rapport_dato = 1 then %>
{ 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; } <% else end if %> <% if rapport_lotnummer = 1 then %>
} 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; } <% else end if %>
return true; }
</script>
<BODY>
og det virker dog forsat kun hvis jeg bruger både dato og lotnummer felter, elerl har jeg misforstået dig ?
Jo, du skal bare lige have de krøllede parenteser på den rigtige side af skelne, sådan her tror jeg nok at det skal være:
<script type="text/javascript">
function valider(f) { <% if rapport_dato = 1 then %> 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; } } <% else end if %> <% if rapport_lotnummer = 1 then %> 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; } <% else end if %>
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.