Avatar billede nythjem Nybegynder
24. august 2004 - 13:48 Der 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].kontakt.value=='') && (error==0)) 
  {       
    alert('Kontaktperson skal udfyldes!');
    document.forms[0].kontakt.focus();
    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].adresse.value=='') && (error==0)) 
  {       
    alert('Du skal udfylde adressen!');
    document.forms[0].adresse.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;       
  }       
           

  if(error == 0)
  document.forms[0].submit();   
  }

// Slut -->
</script>
Avatar billede roenving Novice
24. august 2004 - 13:58 #1
Hvad er fejlen ?-)
Avatar billede nythjem Nybegynder
24. august 2004 - 14:01 #2
Hej Jes.

Der står i min fejl meddelelse, at den giver syntaks fejl..
Avatar billede nythjem Nybegynder
24. august 2004 - 14:03 #3
Men hvis du ikke kan se nogle fejl i scriptet, så må det jo hænge sammen med formen.. Hvad bruges "ff" og "test" til?
Avatar billede roenving Novice
24. august 2004 - 14:04 #4
ff er formen, test er en metode på en regexp, som tester validiteten af en streng ...
Avatar billede roenving Novice
24. august 2004 - 14:19 #5
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;
  }

  return true;
  }
</script>
Avatar billede nythjem Nybegynder
24. august 2004 - 14:24 #6
Det har jeg nu også Jes. Jeg har også omdøbt formen til at hedde name="ff", men den giver stadig ingen validering?

Jeg vil nødig poste formen her fordi den er så "lang", men se den evt. her.

http://www.afront.dk/defaults.asp?item=bestil
Avatar billede roenving Novice
24. august 2004 - 14:30 #7
Prøv at gøre, som jeg har vist, så skulle det gerne virke, ovenikøbet også i andre browsere end IE ...
Avatar billede nythjem Nybegynder
24. august 2004 - 14:39 #8
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;
  }
Avatar billede roenving Novice
24. august 2004 - 14:41 #9
Så er der nok en } for meget, så meget har jeg ikke kigget på det, at jeg ville fange sådan en !-)
Avatar billede nythjem Nybegynder
24. august 2004 - 14:49 #10
Ja sørme.. :)

Tak skal du have for hjælpen Jes :)
Avatar billede roenving Novice
24. august 2004 - 14:53 #11
Velbekomme '-)
Avatar billede roenving Novice
24. august 2004 - 15:17 #12
-- og 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