Avatar billede capper83 Nybegynder
22. august 2005 - 10:04 Der er 16 kommentarer og
1 løsning

Validering af en masse tekstfelter

hejsa

jeg er igang med at lave en hjemmeside hvor man skal oprette en bruger for at kunne bruge min hjemmeside.
ville så bare lige høre om hvordan man kan tjekke om personen har skrevet noget i alle felterne.

har felterne:
Brugernavn
kodeord
fornavn
efternavn
email
gentag email

og ville lige høre hvordan man tjekker om det er den samme email personen har skrevet i email og gentag email.

på forhånd tak

Venlig Hilsen Jack Sørensen
Avatar billede fennec Nybegynder
22. august 2005 - 10:23 #1
Jeg har brugt denne før. Den tjekker også for om email er en rigtig addresse. Ved desværre ikke hvem der har lavet den :(

function validate(objForm){
          for (i=0; i<objForm.newsTo.length; i++)
            objForm.newsTo[i].selected = true;
        var errorMessage = "";
        var firstError = "";
       
        if (!objForm.email.value.match(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.\w{2,4}$/i)) {
                alert("E-mail address not valid");
                return false;
        }
               
        for (var i=0;i<objForm.length;i++){
            switch(objForm[i].type){
                case "text":
                    if (objForm[i].required && !objForm[i].value){
                        errorMessage += objForm[i].feltnavn + "\n";
                        if (!firstError)
                            firstError = objForm[i];
                    }
                break;
            }
        }
        if (errorMessage){
            alert("Please fill out\n" + errorMessage);
            firstError.focus();
            return false;
        }
}

den valider kun "text" felter nu og alle de felter som skal valideres skal have required="true" med som attribut. Den skal udvides til at sammenligne emailfelterne, men det kan vi tage bagefter.
formen skal have onsubmit="return validate(this);" på så funktionen bliver kaldt.
Avatar billede softspot Forsker
22. august 2005 - 10:26 #2
Denne funktion returnerer true hvis alle felter er udfyldt og email er ens (name-attributten på de enkelte formularfelter skal stemme overens med de viste).

function validate(frm)
{
  var bRes = true;
  bRes = bRes && frm.Brugernavn.value.length > 0;
  bRes = bRes && frm.kodeord.value.length > 0;
  bRes = bRes && frm.fornavn.value.length > 0;
  bRes = bRes && frm.efternavn.value.length > 0;
  bRes = bRes && frm.email.value.length > 0;
  bRes = bRes && frm.email.value == frm.gentagemail.value;

  return bRes
}

Der kan laves brugerinteraktion på de enkelte check hvis du vil have det...
Avatar billede softspot Forsker
22. august 2005 - 10:27 #3
...som du kan se i fennec's løsning ;)
Avatar billede capper83 Nybegynder
22. august 2005 - 10:28 #4
kan jeg ikke lige få et eksempel på et input med det der required="true"?? jeg er nemmelig ikke lige helt med på det
Avatar billede fennec Nybegynder
22. august 2005 - 10:40 #5
Der var lige nogle rettelser til scriptet, som havde med min gamle side at gøre. Her er et eks:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function validate(objForm){
        var errorMessage = "";
        var firstError = "";
       
        if (!objForm.email.value.match(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.\w{2,4}$/i)) {
                alert("E-mail address not valid");
                return false;
        }
               
        for (var i=0;i<objForm.length;i++){
            switch(objForm[i].type){
                case "text":
                    if (objForm[i].required && !objForm[i].value){
                        errorMessage += objForm[i].name + "\n";
                        if (!firstError)
                            firstError = objForm[i];
                    }
                break;
            }
        }
        if (errorMessage){
            alert("Please fill out\n" + errorMessage);
            firstError.focus();
            return false;
        }
}
//-->
</SCRIPT>
<form name="myForm" method="post" onsubmit="return validate(this);">
<input type="Text" name="navn" required="true" value="">*<br>
<input type="Text" name="address" required="true" value="">*<br>
<input type="Text" name="post" required="true" value="">*<br>
<input type="Text" name="city" required="true" value="">*<br>
<input type="Text" name="email" required="true" value="fennec@mail.dk">*<br>
<input type="Text" name="temp1" value=""><br>
<input type="Text" name="temp2" value=""><br>
<input type="Submit" value="klik">
</form>
Avatar billede capper83 Nybegynder
22. august 2005 - 11:01 #6
hmm der er kun en email den skal tjekke om der står det samme email og gentag email.
men ellers er det nice nok
Avatar billede fennec Nybegynder
22. august 2005 - 11:21 #7
Sammenlign email kan komme lige efter valideringen:

if (!objForm.email.value.match(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.\w{2,4}$/i)) {
  alert("E-mail address not valid");
  return false;
}
if (objForm.email.value != objForm.emailGentag.value)
  alert("E-mail do not match");
  return false;
}

<input type="Text" name="email" required="true" value="">*<br>
<input type="Text" name="emailGentag" required="true" value="">*<br>
Avatar billede capper83 Nybegynder
22. august 2005 - 11:42 #8
det virker ikke helt kommer med en fejl " 'return' statement outsite of function"
Avatar billede capper83 Nybegynder
22. august 2005 - 11:43 #9
det er det der sammenlign email fejlen er
Avatar billede fennec Nybegynder
22. august 2005 - 11:52 #10
Der mangler lige en {

if (objForm.email.value != objForm.emailGentag.value){
Avatar billede capper83 Nybegynder
22. august 2005 - 11:57 #11
har jeg sat ind har lige fundet ud af det selv :) men det virker stadig ikke
Avatar billede fennec Nybegynder
22. august 2005 - 12:02 #12
Denne virker hos mig:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function validate(objForm){
        var errorMessage = "";
        var firstError = "";
       
        if (!objForm.email.value.match(/^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.\w{2,4}$/i)) {
                alert("E-mail address not valid");
                return false;
        }
        if (objForm.email.value != objForm.emailGentag.value){
          alert("E-mail do not match");
          return false;
        }
               
        for (var i=0;i<objForm.length;i++){
            switch(objForm[i].type){
                case "text":
                    if (objForm[i].required && !objForm[i].value){
                        errorMessage += objForm[i].name + "\n";
                        if (!firstError)
                            firstError = objForm[i];
                    }
                break;
            }
        }
        if (errorMessage){
            alert("Please fill out\n" + errorMessage);
            firstError.focus();
            return false;
        }
}
//-->
</SCRIPT>
<form name="myForm" method="post" onsubmit="return validate(this);">
<input type="Text" name="navn" required="true" value="">*<br>
<input type="Text" name="address" required="true" value="">*<br>
<input type="Text" name="post" required="true" value="">*<br>
<input type="Text" name="city" required="true" value="">*<br>
<input type="Text" name="email" required="true" value="">*<br>
<input type="Text" name="emailGentag" required="true" value="">*<br>
<input type="Text" name="temp1" value=""><br>
<input type="Text" name="temp2" value=""><br>
<input type="Submit" value="klik">
</form>
Avatar billede capper83 Nybegynder
22. august 2005 - 12:07 #13
gør det også ved mig nu :) jeg havde lige smidt det et forkert sted!
jeg takker mange gange for hjælpen...
smider du lige et svar???

Venlig Hilsen
Jack
Avatar billede fennec Nybegynder
22. august 2005 - 12:15 #14
.o) <-- One Eyed Jack
Avatar billede capper83 Nybegynder
22. august 2005 - 12:19 #15
Lukket ;)
Avatar billede rundt_om Nybegynder
05. januar 2006 - 21:17 #16
Hey fennec.

Kan dit script udvides, så det kan tjekke andet end tekstfelter?
-jeg har nemlig en checkbox som skal være markeret/godkendt, før man kan avancere
Avatar billede fennec Nybegynder
17. januar 2006 - 11:34 #17
Er det bare EN checkbox eller er det flere som skal være afkrydset??

ps. Undskyld den sene svartid, men jeg har været på skiferie i USA og kom først hjem igår :o)
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