24. august 2004 - 13:48Der er
11 kommentarer og 1 løsning
Validering af domæne
Hej alle!
Jeg har et form script, der checker hvorvidt felterne er korrekt udfyldt. Jeg har fundet en mere korrekt del jeg meget gerne vil have integreret i mit script, men ved ikke helt hvordan. Jeg har forsøgt, men det giver fejl,
er der en venlig logisk sjæl, der gider rettet det :)
(Jeg har lavet en kommentar, hvor det nye er sat ind)
>>> SCRIPT <<<
<script type="text/javascript">
function validering() { error = 0;
/// ***** HER ER DEN NYE DEL ******
var myRE = /^[a-zA-Z0-9\-]{1,63}$/; var myREdk = /^[a-zA-Z0-9\-æøåÆØÅäÄöÖüÜéÉ]{1,63}$/; var myREnu1 = /^[a-zA-Z0-9\-]{6,63}$/; var myREnu2 = /[a-zA-Z]{1,}/; var myREse1 = /^[a-zA-Z0-9\-]{2,63}$/; var myREse2 = /[a-zA-Z]{1,}/;
if(!myREdk.test(ff.domain.value) && ff.tld.value == ".dk"){ alert('Du må kun bruge tegnene a-z, æ, ø, å, ä, ö, ü, é, 0-9 og bindestreg.') ff.domain.select() ff.domain.focus() return false }
else if((!myREnu1.test(ff.domain.value) || !myREnu2.test(ff.domain.value)) && ff.tld.value == ".nu"){ alert('For .nu domæner gælder følgende: \n- Du må kun bruge tegnene a-z, 0-9 og bindestreg. \n- Domænet skal være mellem 6 og 63 tegn langt\n- Domænet skal indeholde et minimum et bogstav') ff.domain.select() ff.domain.focus() return false }
else if((!myREse1.test(ff.domain.value) || !myREse2.test(ff.domain.value)) && ff.tld.value == ".se"){ alert('For .se domæner gælder følgende: \n- Du må kun bruge tegnene a-z, 0-9 og bindestreg. \n- Domænet skal være mellem 2 og 63 tegn langt\n- Domænet skal indeholde et minimum et bogstav') ff.domain.select() ff.domain.focus() return false }
else if(!myRE.test(ff.domain.value) && ff.tld.value != ".dk" && ff.tld.value != ".nu" && ff.tld.value != ".se"){ alert('Du må kun bruge tegnene a-z, 0-9 og bindestreg.') ff.domain.select() ff.domain.focus() return false } else if(ff.domain.value.indexOf("_") != -1){ alert('Du må ikke bruge underscore - brug i stedet bindestreg.') ff.domain.select() ff.domain.focus() return false } else if(ff.domain.value.length < 3 && ff.tld.value == ".info"){ alert('.info domæner skal max indholde 3 tegn.') ff.domain.select() ff.domain.focus() return false }
else {return true} }
/// ***** HER ER DEN NYE DEL (SLUT) ******
if(!((document.forms[0].domainwhat[0].checked) || (document.forms[0].domainwhat[1].checked)) && (error==0)) { alert('Du skal vælge enten\n\n- Domænet er nyt og skal registreres\n- Domænet har vi og skal flyttes\n'); error = 1; }
if((document.forms[0].firmanavn.value=='') && (error==0)) { alert('Firmanavn skal udfyldes!\n\nHar du ikke et firmanavn kan du blot \nindskrive dit eget navn i stedet.'); document.forms[0].firmanavn.focus(); error = 1; }
if((document.forms[0].postnr.value=='') && (error==0)) { alert('Postnummer og by skal udfyldes!'); document.forms[0].postnr.focus(); error = 1; }
if((document.forms[0].land.value=='') && (error==0)) { alert('Land skal udfyldes!\n\nKommer du (kunde) fra Danmark kan du skrive \nDanmark eller DK.'); document.forms[0].land.focus(); error = 1; }
if((document.forms[0].telefon.value=='') && (error==0)) { alert('Telefon nummer skal udfyldes!\n\nHar du ikke fastnet telefon kan du skrive \ndit mobiltelefon nummer.'); document.forms[0].telefon.focus(); error = 1; }
placering=0; tekst=(document.forms[0].email.value).toLowerCase(); placering=tekst.indexOf("@"); if(tekst ==""){ alert ("Der skal stå en e-mail adresse i tekst feltet"); error = 1; } else{ tegn=tekst.indexOf(" "); if(tegn!=-1){ alert ("Der må ikke være mellemrum i e-mail adresse"); error = 1; } else{ if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 || tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 || tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){ alert ("Der er ulovlige tegn i adressen. Må ikke indeholde: æ ø å Æ Ø Å , ;"); error = 1; } else{ if (placering<1 || tekst.length<=(placering+1)){ alert ("E-mail adressen er forkert - forsøg venligst igen"); error = 1; } } } }
if(!(document.forms[0].tjekher.checked) && (error==0)) { alert('Du skal acceptere forretningsbetingelserne for at kunne bestille!'); document.forms[0].tjekher.focus(); error = 1; }
Du skal jo så have et felt, som hedder domain (alene med domænet i !-) og et andet (en select !-), som hedder tld (med top-level-domænet, som her kan være .dk, .nu, .se og .info !-)
-- og så ville jeg, fordi det er kønnere og effektivere, gøre sådan:
<form ... onsubmit="return validering(this)">
-- og:
<script type="text/javascript"> function validering(f){ /// ***** HER ER DEN NYE DEL ****** var myRE = /^[a-zA-Z0-9\-]{1,63}$/; var myREdk = /^[a-zA-Z0-9\-æøåÆØÅäÄöÖüÜéÉ]{1,63}$/; var myREnu1 = /^[a-zA-Z0-9\-]{6,63}$/; var myREnu2 = /[a-zA-Z]{1,}/; var myREse1 = /^[a-zA-Z0-9\-]{2,63}$/; var myREse2 = /[a-zA-Z]{1,}/;
if(!myREdk.test(f.domain.value) && f.tld.value == ".dk"){ alert('Du må kun bruge tegnene a-z, æ, ø, å, ä, ö, ü, é, 0-9 og bindestreg.') f.domain.select() f.domain.focus() return false }
if((!myREnu1.test(f.domain.value) || !myREnu2.test(f.domain.value)) && f.tld.value == ".nu"){ alert('For .nu domæner gælder følgende: \n- Du må kun bruge tegnene a-z, 0-9 og bindestreg. \n- Domænet skal være mellem 6 og 63 tegn langt\n- Domænet skal indeholde et minimum et bogstav') f.domain.select() f.domain.focus() return false }
if((!myREse1.test(f.domain.value) || !myREse2.test(f.domain.value)) && f.tld.value == ".se"){ alert('For .se domæner gælder følgende: \n- Du må kun bruge tegnene a-z, 0-9 og bindestreg. \n- Domænet skal være mellem 2 og 63 tegn langt\n- Domænet skal indeholde et minimum et bogstav') f.domain.select() f.domain.focus() return false }
if(!myRE.test(f.domain.value) && f.tld.value != ".dk" && f.tld.value != ".nu" && f.tld.value != ".se"){ alert('Du må kun bruge tegnene a-z, 0-9 og bindestreg.') f.domain.select() f.domain.focus() return false } if(f.domain.value.indexOf("_") != -1){ alert('Du må ikke bruge underscore - brug i stedet bindestreg.') f.domain.select() f.domain.focus() return false } if(f.domain.value.length < 3 && f.tld.value == ".info"){ alert('.info domæner skal max indholde 3 tegn.') f.domain.select() f.domain.focus() return false } }
/// ***** HER ER DEN NYE DEL (SLUT) ******
if(!(f.domainwhat[0].checked || f.domainwhat[1].checked)) { alert('Du skal vælge enten\n\n- Domænet er nyt og skal registreres\n- Domænet har vi og skal flyttes\n'); return false; }
if(f.kontakt.value=='') { alert('Kontaktperson skal udfyldes!'); f.kontakt.focus(); return false; }
if(f.firmanavn.value=='') { alert('Firmanavn skal udfyldes!\n\nHar du ikke et firmanavn kan du blot \nindskrive dit eget navn i stedet.'); f.firmanavn.focus(); return false; }
if(f.adresse.value=='') { alert('Du skal udfylde adressen!'); f.adresse.focus(); return false; }
if(f.postnr.value=='') { alert('Postnummer og by skal udfyldes!'); f.postnr.focus(); return false; }
if(f.land.value=='') { alert('Land skal udfyldes!\n\nKommer du (kunde) fra Danmark kan du skrive \nDanmark eller DK.'); f.land.focus(); return false; }
if(f.telefon.value=='') { alert('Telefon nummer skal udfyldes!\n\nHar du ikke fastnet telefon kan du skrive \ndit mobiltelefon nummer.'); f.telefon.focus(); return false; }
placering=0; tekst=(f.email.value).toLowerCase(); placering=tekst.indexOf("@"); if(tekst ==""){ alert ("Der skal stå en e-mail adresse i tekst feltet"); return false; } else{ tegn=tekst.indexOf(" "); if(tegn!=-1){ alert ("Der må ikke være mellemrum i e-mail adresse"); return false; } else{ if (tekst.indexOf("æ")!=-1 || tekst.indexOf("ø")!=-1 || tekst.indexOf("å")!=-1 || tekst.indexOf("Æ")!=-1 || tekst.indexOf("Ø")!=-1 || tekst.indexOf("Å")!=-1 || tekst.indexOf(";")!=-1 || tekst.indexOf(",")!=-1){ alert ("Der er ulovlige tegn i adressen. Må ikke indeholde: æ ø å Æ Ø Å , ;"); return false; } else{ if (placering<1 || tekst.length<=placering+1){ alert ("E-mail adressen er forkert - forsøg venligst igen"); return false; } } } }
if(!f.tjekher.checked) { alert('Du skal acceptere forretningsbetingelserne for at kunne bestille!'); f.tjekher.focus(); return false; }
Jeg tester selvfølgelig før jeg begynder at kværkulere :)
Men jeg får fejlen "Return sætning uden for sætningen"
if(f.domain.value.length < 3 && f.tld.value == ".info"){ alert('.info domæner skal max indholde 3 tegn.') f.domain.select() f.domain.focus() return false } } /// ******* FEJL HER? Return sætning er uden for sætningen if(!(f.domainwhat[0].checked || f.domainwhat[1].checked)) { alert('Du skal vælge enten\n\n- Domænet er nyt og skal registreres\n- Domænet har vi og skal flyttes\n'); return false; }
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.