Avatar billede sth Novice
22. september 2009 - 11:35 Der 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 ?



<%
rapport_dato = 0
Response.Write "rapport_dato" & rapport_dato
%>



<!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;
  }
 
  return true;
}

</script>

<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:  </B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_kundenr" name="rapport_kundenr" maxlength="20"type="text"tabindex=1 value="<%=kundenummer%>" readonly="readonly">
        </td>
    </tr>
    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Bruger:  </B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_userid" name="rapport_userid"  tabindex=2 value="<%=teknos_user_login%>" readonly="readonly">
        </td>
<%
    if rapport_varenummer = 1 then
%>
    </tr>
    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Varenummer:  </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>
        <td><a href="java script:void(0);" onmouseover="return overlib('<%=help_varenummer2%>', CAPTION, '<%=help_varenummer1%>');" onmouseout="return nd();"><IMG SRC="images/help.jpg"  BORDER="0" ALT=""></a></td>

<%
    else
    end if
%>
<%
    if rapport_dato = 1 then
%>
    </tr>
    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Fra og med dato:  </B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_fra_dato" name="rapport_fra_dato" autocomplete='off' type="text" tabindex=6 value="dd-mm-yyyy" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="10">
          <a href="java script:showCal('Kalender1')">
          <img  src=images/cal.gif width=20 height=20 border=0 alt="Tryk her for at vælge start dato."></a></small>
        </td>
        <td><a href="java script:void(0);" onmouseover="return overlib('<%=help_dato2%>', CAPTION, '<%=help_dato1%>');" onmouseout="return nd();">
        <IMG SRC="images/help.jpg"  BORDER="0" ALT=""></a>
        </td>
    </tr>
    <tr>
        <td width="250" valign="bottom" valign="top" align="right" height="13" class="txt_colur1"><B>Til og med dato:  </B></td>
        <td width="150" valign="bottom" valign="top" height="13" >
          <input id="rapport_til_dato" name="rapport_til_dato" autocomplete='off' type="text" tabindex=7 value="dd-mm-yyyy" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="10">
          <a href="java script:showCal('Kalender2')">
          <img src=images/cal.gif width=20 height=20 border=0 alt="Tryk her for at vælge slut dato."></a></small></td>
        <td><a href="java script:void(0);" onmouseover="return overlib('<%=help_dato2%>', CAPTION, '<%=help_dato1%>');" onmouseout="return nd();">
        <IMG SRC="images/help.jpg"  BORDER="0" ALT=""></a>
        </td>
<%
    else
    end if
%>
       
    </tr>
</table>
<input type="submit" value="Bestil denne rapport" name="Send" style=";"id="knap_nav1">
</form>


</body>

</html>
Avatar billede ebusiness Nybegynder
22. september 2009 - 13:13 #1
Følgende er i hvert fald ikke en legal linje java script:

var dato = f.rapport_fra_dato.value,dat;
Avatar billede sth Novice
22. september 2009 - 17:57 #2
det kan du nok have ret i men hvad så?
Avatar billede ebusiness Nybegynder
22. september 2009 - 18:23 #3
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.
Avatar billede sth Novice
22. september 2009 - 22:36 #4
Som i nok har regnet ud så er dette ikke noget kode jeg selv har fundet på, indrømmet jeg bare bare ikke god til JavaScript

jeg kan se at det er n kode jeg har fået af roenving for 5 år siden så det er jo lidt tid siden

se: http://www.eksperten.dk/spm/528432


efter hvad jeg lige husker så var  og er nok stadigvæk roenving  lidt en haj til JavaScript


jeg tror dog ikke at jeg har haft dette problem i 5 år så mon det kan have noget at gøre med at div. browsere er blevet opdateret

jeg kan ikke sige hvorfor at koden er som den er ... er der nogen der kan rette den  / vise mig en anden kode der virker?
Avatar billede olebole Juniormester
22. september 2009 - 23:10 #5
<ole>

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

/mvh
</bole>
Avatar billede ebusiness Nybegynder
22. september 2009 - 23:19 #6
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.
Avatar billede olebole Juniormester
23. september 2009 - 00:00 #7
Hehe ... så er vi godt nok mange 'kryptikkere'  =)
Avatar billede ebusiness Nybegynder
23. september 2009 - 00:20 #8
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.
Avatar billede sth Novice
23. september 2009 - 11:18 #9
hej igen


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?

jeg arh lat disse 3 filer ud
www.halstat.dk/test/test1.asp  denne har kun dato felt

www.halstat.dk/test/test2.asp  denne har kun lot nummer felt men nu virker valideringen ikke, kunne forestille migat jeg har lavet en fejl

www.halstat.dk/test/test3.asp  denne har både dato- og lot nummer felt virker ok med lotnumemr men nu virker validering på dato så ikke.
Avatar billede ebusiness Nybegynder
23. september 2009 - 11:56 #10
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.
Avatar billede sth Novice
23. september 2009 - 14:46 #11
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 ?
Avatar billede ebusiness Nybegynder
23. september 2009 - 17:24 #12
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
%>

  return true;
}

</script>
Avatar billede sth Novice
24. september 2009 - 07:16 #13
JA! Det var lige sådan det skulle være.

Tak for hjælpen, kommer du med et svar?
Avatar billede ebusiness Nybegynder
24. september 2009 - 14:58 #14
Jeg svarede sådan set i post #6.
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