Avatar billede jl4511 Nybegynder
06. oktober 2006 - 10:49 Der er 11 kommentarer og
1 løsning

Validering fejler i FireFox

Hej

Jeg har dette lille javascript som validerer om et felt er udfyldt.
Det virker fint i IE, men i FF viser den alert'en - og fortsætter så som om ingenting var hændt!
Hvad er der galt?

function Send() {
  if(document.order.firstname.value=='') {
    alert('Fornavn skal indtastes.');
    document.order.firstname.focus();
    return;
  }
  document.order.submit();
}
Avatar billede reginho Nybegynder
06. oktober 2006 - 11:28 #1
Hej

Jeg kender intet til javascript men det er sansynligvis valideringen der er noget galt med. Som du sikkert ved fortolker de forskellige browsere koden forskelligt. Prøv derfor at validere din javascript kode. Mener du kan gøre det på www.w3.org.
Avatar billede jl4511 Nybegynder
06. oktober 2006 - 12:54 #2
Det viste sig at være fordi jeg submittede med en button (!)

<button onclick="Send();">Send bestilling</button>

Det ændrede jeg til:
<a href="#" onclick="Send();">Send bestilling</a>

Nu virker det både i IE og FF - men jeg har ingen ide om hvorfor!
Avatar billede mclemens Nybegynder
06. oktober 2006 - 13:04 #3
<form onsubmit="Send();" ...>
... og så dine buttons / submit knapper ...
</form>
Avatar billede mclemens Nybegynder
06. oktober 2006 - 13:06 #4
ups...

<form onsubmit="return Send();" ...>
... og så dine buttons / submit knapper ...
</form>

function Send() {
  if(document.order.firstname.value=='') {
    alert('Fornavn skal indtastes.');
    document.order.firstname.focus();
    return false;
  }
  else return true;
}
Avatar billede jl4511 Nybegynder
06. oktober 2006 - 14:35 #5
Jeg åbner lige igen (hvis man kan), for mclemens kommentar er jo svaret :o)
Avatar billede jl4511 Nybegynder
06. oktober 2006 - 14:37 #6
Med hiv og sving fik jeg åbnet igen - lægger du et svar mclemens?
Og tak for hjælpen :o)
Avatar billede mclemens Nybegynder
06. oktober 2006 - 16:24 #7
Og her er lige et svar :)
Avatar billede roenving Novice
06. oktober 2006 - 16:41 #8
-- og den simple forkortelse skal da også med:

<form onsubmit="return Send(this);" ...>
... og så dine submit knapper ...

Bemærk, at hvis det skal fungere uden problemer og fuldstændig ens, skal du bruge input type="submit" !-)
</form>

function Send(f) {
  if(f.firstname.value=='') {
    alert('Fornavn skal indtastes.');
    f.firstname.focus();
    return false;
  }
  return true;
}
Avatar billede jl4511 Nybegynder
06. oktober 2006 - 17:20 #9
Roenving: takker - og det var netop hvad jeg gjorde (input type="submit").
Hele miseren lå vist i at jeg havde lagt onClick-eventen på knappen, istedet for på formularen... tror jeg nok.
Avatar billede mclemens Nybegynder
06. oktober 2006 - 17:20 #10
Tak for point :)
Og tak for forkortelsen fra Rønving ;)
Avatar billede olebole Juniormester
09. oktober 2006 - 13:05 #11
<ole>

En anden løsning kunne være:

function Send(f) {
  var bReturn = true;
  if(f.firstname.value=='') {
    alert('Fornavn skal indtastes.');
    f.firstname.focus();
    bReturn = false;
  }
  f.onsubmit = function(){return bReturn};
}

<form>
    ... en masse felter ...
    <button onclick="Send();">Send bestilling</button>
</form>

/mvh
</bole>
Avatar billede jl4511 Nybegynder
09. oktober 2006 - 13:32 #12
Ja, og der er sikkert flere måder :o)
Men lad mig da lige poste den løsning jeg endte op med:
.
.
<head>
<script type="text/javascript">
function Send() {
  var frm=document.getElementById("order_form");
  if(frm.firstname.value=='') {
    alert('Fornavn skal indtastes.');
    frm.firstname.focus();
    return false;
  }
  if(frm.lastname.value=='') {
    alert('Efternavn skal indtastes.');
    frm.lastname.focus();
    return false;
  }
  if(frm.address.value=='') {
    alert('Adresse skal indtastes.');
    frm.address.focus();
    return false;
  }
  if(frm.zipcode.value=='') {
    alert('Postnr. skal indtastes.');
    frm.zipcode.focus();
    return false;
  }
  if(frm.city.value=='') {
    alert('Bynavn skal indtastes.');
    frm.city.focus();
    return false;
  }
  if(frm.email.value=='') {
    alert('Email skal indtastes.');
    frm.email.focus();
    return false;
  }
  return true;
}
</script>
</head>
<body>
<form id="order_form" method="post" onsubmit="return Send();">
<input name="firstname" value="" type="text">
<input name="lastname" value="" type="text">
.
. osv.
.
<input name="button" value="Send bestilling" type="submit">
</form>

Har her udeladt al formattering og tabeller og den slags.
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