Avatar billede superbent Nybegynder
26. marts 2004 - 16:18 Der er 12 kommentarer og
2 løsninger

Skal bruge nogle validerings formler.

Hej,

Jeg er ikke god til javascript, og ved at det er forholdsvis simpelt det jeg skal have lavet.

Jeg udlover 180 points (60 points pr. funktion), for at få fat i nogle forskellige funktioner til javascript - jeg har forskellige input felter.
-----------

Funktioner jeg skal bruge:
1. Tjek om den email man skriver, er skrevet korrekt.

2. Det input man skriver ikke er længere end 50 tegn, og kun indeholder 0-9, a-z og A-Z.
(skal bruges til at skrive navn til subdomain)

3. Tjek om input felt er tomt/ikke udfyldt.

------------

På forhånd tak.
Avatar billede roenving Novice
26. marts 2004 - 16:28 #1
function valider(f){
  var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}\w*$/i;
  tekst=f.mail.value.toLowerCase();
  if (!regexp.test(tekst)){
      alert ("Der skal stå en gyldig e-mail adresse i tekst feltet");
      f.mail.focus();
      return false;
  }

  var regexp = /^[0-9a-z]{1,50}$/i;
  tekst=f.tekst.value;
  if (!regexp.test(tekst)){
      alert ("Du skal udfylde tekst-feltet med en tekst ...\nKun a-z og 0-9 er gyldige og maximalt 50 karakterer");
      f.tekst.focus();
      return false;
  }
  return true;
}

<form ... onsubmit="return valider(this);">
Avatar billede roenving Novice
26. marts 2004 - 16:31 #2
-- og nu smed jeg de to sidste funktioner sammen, men den sidste alene er:

  tekst=f.tekst.value;
  if (tekst.length==0){
      alert ("Du skal udfylde tekst-feltet med en tekst !-)");
      f.tekst.focus();
      return false;
  }
Avatar billede superbent Nybegynder
26. marts 2004 - 18:17 #3
Tak, jeg prøver dem lige om lidt...

roenving, er det muligt at lave på et alm link, en confirm?
<a href="linknavn.php?id="> linknavn</a>

hvis man trykker siger den : er du sikker på du vil fortsætte? eller noget i den stil.
Avatar billede roenving Novice
26. marts 2004 - 18:22 #4
Ja, sådan:

<a href="linknavn.php?id=" onclick="return confirm('Er du sikker på, at du vil fortsætte ?-)')"> linknavn</a>
Avatar billede superbent Nybegynder
26. marts 2004 - 18:33 #5
Tak, læg lige et svar (jeg kan først tjekke de andre funktioner senere idag, men du skal have points for din tid, så kan det være jeg lige skriver kommentar senere idag ;)
Avatar billede roenving Novice
26. marts 2004 - 18:40 #6
Jamen, så prøv lige funktionerne først, det ville nemlig ikke undre mig, at du lige havde et tillægsspørgsmål eller to, det har de fleste nemlig første gang, de har fat i regexps !-)

-- og så kan vi ordne point-spørgsmålet i den sammenhæng ...

-- og de 180 points er langt udover det fornuftige, man kan _måske_ argumentere for, at email-valideringen har sværheds-graden medium, men det vil efterlade, at spørgsmålene ialt maximalt kan udløse 60 points, hvis man bruger den måde du selv gør det op:

Et medium à 30 p. og to lette à 15 p. !o]

-- så du skal også selv lægge et svar og beholde de 120 points !-)
Avatar billede superbent Nybegynder
26. marts 2004 - 19:09 #7
roenving, den funktion du har lavet som skriver "udfyld tekst" - der skal man lave en pr. input boks... er det muligt at lave én funktion, og så henvise til den fra input boksen eller lign.?

Jeg fatter ikke javascript, men vil gætte på det har noget at gøre med:
function (inputnavn) {
var input = inputnavn;
if (et eller andet her)
alert("husk at udfylde de manglende felter");
}

så må du hjælpe mig med resten mr. javascripter, hehe
Avatar billede roenving Novice
26. marts 2004 - 19:15 #8
Hvis du har en almindelig formular er det nemmest bare at lave en stribe kopier af valideringen, men man da godt lave små funktioner, som generisk kigger igennem, den kan køres helt ud f.eks. med denne:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Check alle felter for udfyldelse</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript">
function checkForm(f){
    var txt = "",fjl;
    var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}\w*$/i;
    for(i=0;f.elements.length>i;i++){
        fld = f.elements[i]
        if ((fld.tagName=='TEXTAREA'||fld.type=="text")&&fld.value==fld.defaultValue){
            txt+="\n\t"+fld.name;
            if(!fjl)fjl = fld;
        }else if (fld.name.toLowerCase().indexOf("mail")>-1){
            if (!regexp.test(fld.value))txt+="\n\t"+fld.name+" -- ikke korrekt mail-adresse-format";
            if(!fjl)fjl = fld;
        }
    }
    if(txt!=""){
        txt = "Du mangler at udfylde disse felter:\n"+txt+"\n\nAlle felter skal udfyldes";
        alert(txt);
        fjl.select();
        fjl.focus()
        return false;
    }
    return true;
}
</script>
</head>
<body>
<br>
<form id="minForm" name="minForm" action="" method="get" onsubmit="return checkForm(this);">
Input1: <input id="minInput1" name="input1" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Input2: <input id="minInput2" name="Input2" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Input3: <input id="minInput3" name="input3" type="text" value="Tom" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
E-mail: <input id="minInput4" name="Email" type="text" value="name@domain.topDomain" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" size="30"><br>
Kommentar: <textarea name="Kommentar" cols="80" rows="5" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"></textarea><br><br>
<input type="submit" value="Send data">
</form>
</body>
</html>
Avatar billede superbent Nybegynder
26. marts 2004 - 21:03 #9
Den er som sådan perfekt bortset fra én ting... og det er at de inputs, som har en defaultValue skal ikke siges "fejl" til... jeg har nogen hvor der er indhold i.

Det er her der skal rettes en ting...
if ((fld.tagName=='TEXTAREA'||fld.type=="text")&&fld.value==fld.defaultValue){
  txt+="\n\t"+fld.name;
  if(!fjl)fjl = fld;
}

"&&fld.value==fld.defaultValue" behøver ikke være default value - ved bare ikke hvordan man fjerner det, da hvis jeg fjerner den kode, siger den stadig samme ting - så du må desværre komme mig til undsætning igen ;)
Avatar billede roenving Novice
26. marts 2004 - 21:08 #10
Nu er den jo også lavet til at arbejde sammen med min defaultValue ting, så hvis du ikke bruger den skal der bare stå:

&&fld.value==""
Avatar billede superbent Nybegynder
26. marts 2004 - 21:40 #11
Ja, den virker nu som den skal.

Der er kun én ting som er galt, og det er at der vidst ikke er den der "subdomain" tjekker.. altså at man kun bruge de rigtige tegn og under 50 stks ;)

Men mange tak ;)

Kommer du med et svar? ;)
Avatar billede roenving Novice
26. marts 2004 - 21:54 #12
Men den kan vi jo kombinere med, altså sætte nogle special-tilfælde ind, ligesom mail-feltvalideringen er et special-tilfælde !-)

f.eks.

function checkForm(f){
    var txt = "",fjl;
    var regexp = /^\w[\w\.\-]*@\w[\w\-]*\.\w{2}\w*$/i;
    var regexp2 = /^[0-9a-z]{1,50}$/i;
    for(i=0;f.elements.length>i;i++){
        fld = f.elements[i]
        if ((fld.tagName=='TEXTAREA'||fld.type=="text")&&fld.value==fld.defaultValue){
            txt+="\n\t"+fld.name;
            if(!fjl)fjl = fld;
        }else if (fld.name.toLowerCase().indexOf("mail")>-1){
            if (!regexp.test(fld.value))txt+="\n\t"+fld.name+" -- ikke korrekt mail-adresse-format";
            if(!fjl)fjl = fld;
        }else if (fld.name.toLowerCase().indexOf("subdomain")>-1){
            if (!regexp2.test(fld.value))txt+="\n\t"+fld.name+" -- Kun a-z og 0-9 er gyldige og maximalt 50 karakterer";
            if(!fjl)fjl = fld;
        }
    }
    if(txt!=""){
        txt = "Du mangler at udfylde disse felter:\n"+txt+"\n\nAlle felter skal udfyldes";
        alert(txt);
        fjl.select();
        fjl.focus()
        return false;
    }
    return true;
}

-- og velbekomme '-)
Avatar billede superbent Nybegynder
26. marts 2004 - 22:07 #13
Mange tak ;)
Avatar billede roenving Novice
26. marts 2004 - 22:11 #14
-- og tak for points ;~}
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