15. marts 2004 - 21:01
Der er
3 kommentarer og
1 løsning
Hjælp - Validering af bestillingsform
Hej,
Jeg er ikke den store javascripter (mest til ASP) og efter gentagende forsøg med at få et "tutorial" script til at fungere, søger jeg nu hjælp her.
Jeg har brug for et javascript til en brugervenlig validering af bestillingsform indeholdende følgende:
Antal1 (input) <-- Skal indeholde mindst 1 tal
Valgmulighed1 (radiobutton)
Valgmulighed2 (radiobutton)
---------------------------
Én af ovenstående skal være markeret.
Fornavn (input) <-- Skal indeholde min. 2 og maks. 50 bogstaver.
Efternavn (input) <-- Skal indeholde min. 2 og maks. 50 bogstaver.
Adresse (input) <-- Skal indeholde min. 2 og maks. 50 bogstaver.
Postnr (input) <-- Skal indeholde min. 4 og maks. 4 tal.
Bynavn (input) <-- Skal indeholde min. 2 og maks. 50 bogstaver.
Telefon (input) <-- Skal indeholde min. 8 og maks. 8 tal.
Epostadresse (input) <-- Skal indeholde @ og .
Accept (checkbox) <-- Skal være markeret.
Jeg håber at der findes en venlig ekspert der vil hjælpe mig :-)
Apo
----------------------
Jeg har sat pointgivningen til svær (60 points), da "hjælpen" vil bestå i at udarbejde et færdigt script til mig :-/
15. marts 2004 - 22:27
#1
Hej Apo.
Detteher skulle virke. Bemærk at jeg har omdøbt både Valgmulighed1 og Valgmulighed2 til Valgmulighed (med værdierne 1 og 2). De skal hedde det samme for at virke som radiobuttons i samme gruppe.
Kald den med <form onSubmit="return validate(this);">
m.v.h. Kim
<script language=javascript>
function checkTal(tal,maxL,minL){
if(maxL > 0 && tal.length > maxL){
return false;
}
if(minL > 0 && tal.length < minL){
return false;
}
for(i = 0; i < tal.length; i++){
if(!(tal.charAt(i) >= 0 && tal.charAt(i) <= 9)){
return false;
}
}
return true;
}
function meldFejl(elem,msg){
alert(msg);
elem.focus();
elem.select();
}
function validate(f){
e = f.elements;
if(!(checkTal(e.Antal1.value,0,1))){
meldFejl(e.Antal1,"Du skal indtaste et antal");
return false;
}
radioSelected = false;
for (i=0; i< e.Valgmulighed.length; i++) {
if (e.Valgmulighed[i].checked) {
radioSelected = true;
break;
}
}
if(!(radioSelected)){
alert("Du skal vælge én af de to muligheder");
return false;
}
if(e.Fornavn.value.length < 2 || e.Fornavn.value.length > 50){
meldFejl(e.Fornavn,"Fornavnet skal være mellem 2 og 50 bogstaver");
return false;
}
if(e.Efternavn.value.length < 2 || e.Efternavn.value.length > 50){
meldFejl(e.Efternavn,"Efternavnet skal være mellem 2 og 50 bogstaver");
return false;
}
if(e.Adresse.value.length < 2 || e.Adresse.value.length > 50){
meldFejl(e.Adresse,"Adressen skal være mellem 2 og 50 bogstaver");
return false;
}
if(!(checkTal(e.Postnr.value,4,4))){
meldFejl(e.Postnr,"Postnummeret skal være på 4 cifre.");
return false;
}
if(e.Bynavn.value.length < 2 || e.Bynavn.value.length > 50){
meldFejl(e.Bynavn,"Bynavnet skal være mellem 2 og 50 bogstaver");
return false;
}
if(!(checkTal(e.Telefon.value,8,8))){
meldFejl(e.Telefon,"Indtast et telefonnr. på 8 cifre.");
return false;
}
if(e.Epostadresse.value.indexOf("@") < 1 || e.Epostadresse.value.indexOf(".") < 1){
meldFejl(e.Epostadresse,"Der er fejl i epostadressen");
return false;
}
if(!(e.Accept.checked)){
alert("Du skal markere at du accepterer");
return false;
}
return true;
}
</script>
15. marts 2004 - 22:51
#2
Hej kimovitch,
Yes - Det virker!!! (efter alle de mange timers forgæves forsøg med andre scripts)
Smid et svar, så er der points til dig :-)
Tak for hjælpen!
Apo