/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Javascript Form Submit
Fra : Mark Olsen


Dato : 06-09-07 13:23

Jeg har følgende kode på en hjemmeside jeg er ved at opdatere.
Den tjekker om alle felter er udfyldt, og hvis det er forkert,
kommer der en alert, er det korrekt, skulle den submitte formen -
men det gør den ikke. Alle felter er korrekt udfyldte, så får
ingen alerts, men heller ikke min form submittet. Koden følger:

Det kan ses i funktion på http://mark0.dk/sr/home.asp?pid=catalog
------

function isEmpty(elem, helperMsg){
   if(elem.value.length == 0){
      alert(helperMsg);
      elem.focus(); // set the focus to this input
      elem.style.background='#fffdb0'
      return true;
   }
   return false;
}

function isNumeric(elem, helperMsg){
   var numericExpression = /^[0-9]+$/;
   if(elem.value.match(numericExpression)){
      return true;
   }else{
      alert(helperMsg);
      elem.focus();
      elem.style.background='#fffdb0'
      return false;
   }
}

function isAlphabet(elem, helperMsg){
   var alphaExp = /^[a-zA-Z]+$/;
   if(elem.value.match(alphaExp)){
      return true;
   }else{
      alert(helperMsg);
      elem.focus();
      elem.style.background='#fffdb0'
      return false;
   }
}

function isAlphanumeric(elem, helperMsg){
   var alphaExp = /^[0-9a-zA-Z]+$/;
   if(elem.value.match(alphaExp)){
      return true;
   }else{
      alert(helperMsg);
      elem.focus();
      elem.style.background='#fffdb0'
      return false;
   }
}

function emailValidator(elem, helperMsg){
   var emailExp =
/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
   if(elem.value.match(emailExp)){
      return true;
   }else{
      alert(helperMsg);
      elem.focus();
      elem.style.background='#fffdb0'
      return false;
   }
}

function formValidator(){
   // Make quick references to our fields
   var fornavn = document.getElementById('fpersonFornavn');
   var efternavn = document.getElementById('fpersonEfternavn');
   var adresse = document.getElementById('fpersonAdresse');
   var postnummer = document.getElementById('fpersonPostnr');
   var telefon = document.getElementById('fpersonTlfPrivat');
   var email = document.getElementById('fpersonEmail');
   
   if(isEmpty(fornavn, "Indtast venligst et fornavn."))
   return false;
   else if(isEmpty(efternavn, "Indtast venligst et efternavn."))
   return false;
   else if(isEmpty(adresse, "Indtast venligst en adresse."))
   return false;
else if(isEmpty(postnummer, "Indtast venligst et
postnummer."))
   return false;
   else if(isEmpty(telefon, "Indtast venligst et telefonnummer."))
   return false;
   else if(isEmpty(email, "Indtast venligst en mailadresse."))
   return false;
   else if(isAlphabet(fornavn, "Indtast venligst et fornavn."))
   return false;
   else if(isAlphabet(efternavn, "Indtast venligst et efternavn."))
   return false;
   else if(isAlphanumerical(adresse, "Indtast venligst en
adresse."))
   return false;
else if(isNumerical(postnummer, "Indtast venligst et
postnummer."))
   return false;
   else if(isNumerical(telefon, "Indtast venligst et
telefonnummer."))
   return false;
   else if(emailValidator(email, "Indtast venligst en
mailadresse."))
   return false;
   else
   return true;
   
}

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Birger (06-09-2007)
Kommentar
Fra : Birger


Dato : 06-09-07 14:26

"Mark Olsen" <delay0@SLETgmail.com> skrev i en meddelelse
news:46dff12e$0$90267$14726298@news.sunsite.dk...
> Jeg har følgende kode på en hjemmeside jeg er ved at opdatere.
> Den tjekker om alle felter er udfyldt, og hvis det er forkert,
> kommer der en alert, er det korrekt, skulle den submitte formen -
> men det gør den ikke. Alle felter er korrekt udfyldte, så får
> ingen alerts, men heller ikke min form submittet. Koden følger:
>
> Det kan ses i funktion på http://mark0.dk/sr/home.asp?pid=catalog
> ------
>
8X



En masse kode... og så er det ikke den samme som den du har på siden.?

else if(emailValidator(email, "Indtast venligst en mailadresse."))
return false;
else
return true;

er erstattet med

else if(emailValidator(email, "Indtast venligst en mailadresse."))
return false;
else
alert("HmM!");
return true;

og eftersom du ikke bruger {} eller indrykning til afgrænsning af if/else
statements, går der noget galt, og det er alt andet end overskueligt, hvor
den sidste "return true" - som må være den du gerne vil bruge, hvis formen
er udfyldt OK -, faktisk hører til...


function formValidator(){
// Make quick references to our fields
var fornavn = document.getElementById('fpersonFornavn');
var efternavn = document.getElementById('fpersonEfternavn');
var adresse = document.getElementById('fpersonAdresse');
var postnummer = document.getElementById('fpersonPostnr');
var telefon = document.getElementById('fpersonTlfPrivat');
var email = document.getElementById('fpersonEmail');

return isEmpty(fornavn, "Indtast venligst et fornavn.") &&
isEmpty(efternavn, "Indtast venligst et efternavn.") &&
isEmpty(adresse, "Indtast venligst en adresse.") &&
isEmpty(postnummer, "Indtast venligst et postnummer.") &&
isEmpty(telefon, "Indtast venligst et telefonnummer.") &&
isEmpty(email, "Indtast venligst en mailadresse.") &&
isAlphabet(fornavn, "Indtast venligst et fornavn.") &&
isAlphabet(efternavn, "Indtast venligst et efternavn.") &&
isAlphanumerical(adresse, "Indtast venligst en adresse.") &&
isNumerical(postnummer, "Indtast venligst et postnummer.") &&
isNumerical(telefon, "Indtast venligst et telefonnummer.") &&
emailValidator(email, "Indtast venligst en mailadresse.");
}

Gør det samme, men er en del mere overskueligt.


Desuden kalder du i din HTML på tværs af domæner. Har aldrig prøvet, men kan
godt forestille mig at det ikke går.
(hvis det gør, så kan jeg i realiteten lave en form, der bliver indsendt
udenom dit check..)

Endelig har du i din form
onsubmit="return formValidator()"
Det burde være nok med
onsubmit="formValidator();"
- den returnerer det rigtige.

Om de sidste to kan være forklaring, ved jeg ikke - men den første ting du
bør gøre, er at gøre dine if'er læsbare...

Birger



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408917
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste