Avatar billede nemesis Nybegynder
22. april 2006 - 17:31 Der er 4 kommentarer og
1 løsning

onsubmit - what is broken?

<SCRIPT>

//global variable for error flag
var errfound = false;
//function to validate by length
function ValidLength(item, len) {
  return (item.length >= len);
}

// display an error alert
function error(elem, text) {
// abort if we already found an error
  if (errfound) return;
  window.alert(text);
  elem.select();
  elem.focus();
  errfound = true;
}

// main validation function
function Validate() {
  errfound = false;
  if (!ValidLength(document.brugerform.navn.value,1))
      error(document.brugerform.navn,"Ups, du mangler at skrive dit navn!");
  if (!ValidLength(document.brugerform.email.value,1))
      error(document.brugerform.email,"Ups, du mangler at skrive din e-mail adresse!");
  if (!ValidLength(document.brugerform.password.value,1))
      error(document.brugerform.password,"Ups, du mangler at skrive din adgangskode!");

  return !errfound; /* true if there are no errors */
}

</SCRIPT>

<form action="bruger.php" method="post" name="brugerform" onSubmit="return Validate();">

Jeg har i årevis brugt ovenstående til at påtvinge brugere at udfylde bestemte felter i en formular. Men det er pludseligt holdt op med at virke. Dvs. det virker - men meget ustabilt. Ca. halvdelen af forsøgene reagerer det korrekt, og man får bare ikke lov til at submitte før felterne er udfyldt. De andre gange kommer den fint med advarslen, men sender alligevel formularen.

Er der nogen, der kan se hvad der kan være galt?

Er der måske et bedre script til opgaven?

På forhånd tak!
Avatar billede olebole Juniormester
22. april 2006 - 18:06 #1
<ole>

Prøv med et link til en side, hvor det ikke virker

/mvh
</bole>
Avatar billede softspot Forsker
22. april 2006 - 18:36 #2
Du kan evt. prøve med dette i stedet:

<SCRIPT>

//global variable for error flag
var errfound = false;
//function to validate by length
function ValidLength(item, len) {
  return (item.length >= len);
}

// display an error alert
function error(elem, text) {
// abort if we already found an error
  if (errfound) return;
  window.alert(text);
  elem.select();
  elem.focus();
  errfound = true;
}

// main validation function
function Validate(frm) {
  errfound = false;
  if (!ValidLength(frm.navn.value,1))
      error(frm.navn,"Ups, du mangler at skrive dit navn!");
  if (!ValidLength(frm.email.value,1))
      error(frm.email,"Ups, du mangler at skrive din e-mail adresse!");
  if (!ValidLength(frm.password.value,1))
      error(frm.password,"Ups, du mangler at skrive din adgangskode!");

  return !errfound; /* true if there are no errors */
}

</SCRIPT>

<form action="bruger.php" method="post" name="brugerform" onSubmit="return Validate(this);">


Mistanken går på at nogle browsere måske ikke kan håndtere den måde at referere til en formular i et dokument og ved at sende en reference til form-elementet med til valideringsrutinen, burde du komme over denne fejlmulighed.

Det er som sagt bare et skud i tågen, for du nævner ikke noget om i hvilke situationer problemet opstår :)
Avatar billede nemesis Nybegynder
11. april 2007 - 13:14 #3
Jeg husker desværre ikke løsningen, men jeg fik da løst problemet:) Smid et svar hvis du vil have point.
Avatar billede softspot Forsker
11. april 2007 - 13:23 #4
OK, du kan da evt. splitte point mellem digselv og mig... :)
Avatar billede softspot Forsker
11. april 2007 - 14:57 #5
Tak for point :)
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