Avatar billede lsolesen Nybegynder
11. november 2001 - 11:50 Der er 21 kommentarer og
1 løsning

Fejlmeddelelse i valideringsscript

Jeg har lavet nedenstående valideringsfunktion til en formular på baggrund af html.dk. Min browser IE 5.0 siger imidlertid, at objektet eller egenskaben ikke er understøttet. Problemet er sidste linie:

  document.forms[0].submit();   

Kan jeg undgå denne fejlmeddelelse?

<script type=\"text/javascript\" language=\"javascript\">
<!--
function validering()
  {
  error = 0;

  if((document.forms[0].Navn.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med dit navn!\');
    document.forms[0].Navn.focus();
    error = 1;       
  }

  if((document.forms[0].Adresse.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med din adresse!\');
    document.forms[0].Adresse.focus();
    error = 1;       
  }   

  if((document.forms[0].Postnr.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med dit postnummer!\');
    document.forms[0].Postnr.focus();
    error = 1;       
  }   


  if((document.forms[0].nyhedsbrev.checked==true) && (error==0)) 
  {       
  if((document.forms[0].email.value==\'\') && (error==0)) 
  {       
    alert(\'Du har tilmeldt dig nyhedsbrevet. Derfor skal du feltet med din e-mail adresse!\');
    document.forms[0].email.focus();
    error = 1;       
  }   
  }

  if(error == 0)
  document.forms[0].submit();   
  }
//-->
</script>
Avatar billede nikolajdu Nybegynder
11. november 2001 - 11:52 #1
Prøv lige med navnet på din form istedet.

document.FORMNAVN.submit()

<form name=\"FORMNAVN ....>
Avatar billede jakoba Nybegynder
11. november 2001 - 11:58 #2
Sært.  Umiddelbart synes jeg også det burde virke.

Er der en grund til du ikke benytter den standard  onsubmit handler i din <form kommando:

<form ... onsubmit=\"return validering( this )\">

og så definerer funktionen med
function validering( frm ) {
  error = 0;

  if((frm.Navn.value==\'\') && (error==0))
  {     
    alert(\'Du skal udfylde feltet med dit navn!\');
    frm.Navn.focus();
    error = 1;     
  }
...
  return true;  // til sidst
}

mvh JakobA
Avatar billede nikolajdu Nybegynder
11. november 2001 - 11:59 #3
Tja grunden er vel at selve idéen kommer fra html.dk :-)
Avatar billede jakoba Nybegynder
11. november 2001 - 12:00 #4
Ups.
  return (error==0)?true:false;  // til sidst
Avatar billede jakoba Nybegynder
11. november 2001 - 12:03 #5
Har din form en  </form>  kommando efter sidste formfelt?
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:06 #6
Det giver samme problem! Jeg har fundet ud af, at det måske er fordi siden kommer frem i et frameset. Jeg får nemlig ikke fejlen, hvis jeg bare bruger siden:  www.vih.dk/langekurser/bestil_materiale.asp

Åbnes den til gengæld i framesettet fra www.vih.dk fra bestil materiale, får jeg fejlen?
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:08 #7
Jacoba > ja, der er formfelt efter sidste formfelt!
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:11 #8
jacoba > nej, der er ingen grund til, at jeg ikke bruger standard-onsubmit-handleren, andet end at ideen til scriptet er fra html.dk, hvor de ikke bruger det!
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:13 #9
Den her burde virke efter Jakoba´s idé

<script type=\"text/javascript\" language=\"\">
<!--
function validering(minForm)
  {
  error = 0;

  if((document.forms[0].Navn.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med dit navn!\');
    document.forms[0].Navn.focus();
    error = 1;       
  }

  if((document.forms[0].Adresse.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med din adresse!\');
    document.forms[0].Adresse.focus();
    error = 1;       
  }   

  if((document.forms[0].Postnr.value==\'\') && (error==0)) 
  {       
    alert(\'Du skal udfylde feltet med dit postnummer!\');
    document.forms[0].Postnr.focus();
    error = 1;       
  }   


  if((document.forms[0].nyhedsbrev.checked==true) && (error==0)) 
  {       
  if((document.forms[0].email.value==\'\') && (error==0)) 
  {       
    alert(\'Du har tilmeldt dig nyhedsbrevet. Derfor skal du feltet med din e-mail adresse!\');
    document.forms[0].email.focus();
    error = 1;       
  }   
  }

  if(error == 0){
  document.bestilling.submit();
  return true;   
  }else{
return false;
}
  }
//-->
</script>



      <p align=\"center\"><b>Lange kurser </b>| <a href=\"../kortekurser/bestilmateriale.asp\">Korte
        kurser</a></p>
      <h1>Bestil materiale om de lange kurser</h1>




     
<p>Her kan du bestille Vejle Idr&aelig;tsh&oslash;jskoles skolebrochure. Den er
  naturligvis <i>gratis</i>.
<ul>
  <li>Du kan ogs&aring; downloade en <a href=\"../tilmeldingsblanket.pdf\">tilmeldingsblanket</a>.
    Blanketten kr&aelig;ver <a href=\"http://www.acrobat.com\" target=\"_blank\">Adobe
    Acrobat Reader</a> installeret p&aring; din computer. </li>
  <li><a href=\"../mailliste/mailingliste.asp\">Frameld dig nyhedsbrevet</a> </li>
</ul>
<form onsubmit=\"return validering(this);\" action=\"bestil_materiale.asp\" METHOD=\"POST\" name=\"bestilling\">
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:14 #10
Samme idé jeg foreslog tidligere det virkede da ;-)

http://www.eksperten.dk/spm/132285
Avatar billede jakoba Nybegynder
11. november 2001 - 12:19 #11
Hmm. Burde stadig virke. (men IE 5.0 har jo et par særheder) Prøv evt at skrives self. foran forms for at adressere mere specifikt:

  self.document.forms[0].submit();

men helst ville jeg køre det over i standard validering. eg sidst i din funktion:

  if(error == 0)
      return true;   
  else
      return false;
}
//-->
</script>

og form kommandoen:
<form onsubmit=\"return validering()\" action=\"bestil_materiale.asp\" METHOD=\"POST\" name=\"bestilling\">

mvh JakobA
Avatar billede jakoba Nybegynder
11. november 2001 - 12:21 #12
nikolajdu >> hvis der returneres korrekt true/false er der ingen grund til at kalde submit fra funktionen.
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:23 #13
Du har ret - overkill :-)
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:24 #14
Jeg fik det først til at virke, som jacoba foreslog ved at erstatte alle document.forms[0] med frm og definerede funktionen validering(frm).

Men jeg kan også få nikolajdus forslag til at virke, det holder jeg fast i foreløbigt.

Hvor skl jeg imidlertid definere funktionen, når jeg tilsyneladende ikke bruger det til noget, jf. minForm i nikolajdus forslag går ikke igen i selve scriptet?
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:28 #15
Når der nu returneres true/false kan jeg jo som jakoba siger blot fjerne linien, som i første omgang skabte problemer. Tak for de hurtige svar!
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:31 #16
Ehe - Jeg havde vist slet ikke svaret ;-)

fint du fik det til at virke.

http://www.fotx.net/nikolajdu
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:33 #17
Det er jeg ked af nikolajdu. Jeg var lidt for hurtig på aftrækkeren med at acceptere svaret fra jakoba. Troede egentlig, at jeg også senere kunne acceptere endnu et svar, men guess not ;-) I skulle begge have haft point!
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:35 #18
Du kan kun acceptere flere, hvis der er flere svar, men jeg havde ikke svaret. Anyway overlever jeg jo nok ;-)
Avatar billede lsolesen Nybegynder
11. november 2001 - 12:36 #19
Det vil jeg huske til næste gang! :o)
Avatar billede jakoba Nybegynder
11. november 2001 - 12:37 #20
vi ka da dele :-)
http://www.eksperten.dk/spm/132339

mvh JakobA
Avatar billede nikolajdu Nybegynder
11. november 2001 - 12:39 #21
Takker Jacob - fair medspiller :-)
Avatar billede lsolesen Nybegynder
11. november 2001 - 19:42 #22
I har styr på det 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