Avatar billede KingMedia Novice
10. januar 2004 - 20:49 Der er 18 kommentarer og
1 løsning

Gennemløb af form til validering..

Hej eksperter :o)

er det muligt at lave en validering der gennemløber formen, og returnerer feltnavn på det der mangler at blive udfyldt ?

eks..

<form name="myForm" method="post" action="test.asp" onsubmit"CheckForm()">
name
<input type="text" name="name"><br>
City
<input type="text" name="city"><br>
phone
<input type="text" name="phone"><br>
<input type="submit">
</form>



hvis vi nu antager at feltet "city" mangler at blive udfyldt..

Så skal den returnere en alert med noget lignende..

---------------------
Fejl i indtastning !
---------------------
Følgende felter mangler at blive udfyldt:

-  Felt 1
-  Felt 2

osv osv.. 

Hvordan gøres det nemmest ?

/Mads
Avatar billede KingMedia Novice
10. januar 2004 - 20:51 #1
det skal lige siges..    at navnene i ovenstående form skal der ses bort fra.. det jeg gerne vil lave er, at den selv finder formnavnene/feltnavne..  så det kan bruges til alle de forms jeg laver uden at rette i det :o)

det vil sige, at der skal tages højde for at der kan være fra 1 - ??? antal felter der skal tjekkes på.

/Mads
Avatar billede grunken Nybegynder
10. januar 2004 - 21:09 #2
<script type="text/javascript">

function kanin(){

elm = document.forms.myForm.elements;

str = "----------------------\n";
str+= "Fejl i indtasning\n";
str+= "----------------------\n\n";
str+= "Følgende felter mangler at blive udfyldt\n\n";

err = 0;

for (i=0;i<elm.length;i++){
  if (elm[i].value.length==0){
  str+=" - "+elm[i].name+" skal udfyldes\n";
  err++
  }
}

if(err>0){
  alert(str);
  return false
}
}
</script>

<form name="myForm" method="post" action="test.asp" onsubmit="return kanin();">
name
<input type="text" name="name"><br>
City
<input type="text" name="city"><br>
phone
<input type="text" name="phone"><br>
<input type="submit" onsubmit="return kanin();">
</form>
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 21:24 #3
husk
  return true;
hvis det går godt ;)
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 21:25 #4
Og du kan roligt fjerne onsubmitten fra

  <input type="submit" onsubmit="return kanin();">

Det er slet ikke en lovlig attribut
Avatar billede KingMedia Novice
10. januar 2004 - 21:27 #5
grunken ..  du har fakkertalt reddet min dag / aften / nat :-D

smider du lige et svar ? :-D

/Mads
Avatar billede KingMedia Novice
10. januar 2004 - 21:28 #6
erikjacobsen >>>  onsubmit er vel nok i <form> tagget ?

og du mener så ..

<form name="myForm" method="post" action="test.asp" onsubmit="return kanin();return true">


??

/Mads
Avatar billede grunken Nybegynder
10. januar 2004 - 23:13 #7
hehe, jeg ved knælme heller ikke hvordan &%#? jeg fik placeret den onsubmit ned ved knappen .. som erik siger så er det totalt ugyldigt *G*

Så ja det er alt rigeligt i form-taggen

erikjacobsen > hvordan kan det være at det er nødvendigt at "return true", hvis den ikke returner noget forsætter den jo fint ?
Avatar billede grunken Nybegynder
10. januar 2004 - 23:13 #8
og et svar :-)
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 23:16 #9
nej, den gør ikke. Hvis du ikke husker en return true vil den kigge
på en tilfældig værdi, der sommetider vil være true, men lige så godt,
i en anden browser, eller på et andet tidspunkt, kan være false. Det dur
ganske simpelt ikke. Så vis lige hvordan det *skal* se ud, grunken  - ikke?
Avatar billede grunken Nybegynder
10. januar 2004 - 23:26 #10
ok ;-)
Avatar billede KingMedia Novice
10. januar 2004 - 23:31 #11
grunken >>>  tak for hjælpen :o)

erikjacobsen >> endnu engang .. tak for hjælpen :o)

/Mads
Avatar billede grunken Nybegynder
10. januar 2004 - 23:31 #12
Men til det vil jeg osse nævne at jeg faktisk lærte noget nyt...selvfølgelig er det næsten kinamands logik at hvis resultatet af en funktion ikke er false, så må den nødvendigvis være true, men personligt har jeg faktisk aldrig selv brugt det, og ganske enkelt nøjedes med at retunere falsk hvis det hang sådan sammen ;-)
Avatar billede KingMedia Novice
10. januar 2004 - 23:32 #13
en anden ting..

er det nødvendigt at jeg kalder mine forms det samme hver gang ?

eller kan man "finde" name="" tagget på formen og smide i en variabel ?

i stedet for

elm = document.forms.myForm.elements;

/Mads
Avatar billede erikjacobsen Ekspert
10. januar 2004 - 23:34 #14
"næsten kinamands logik at hvis resultatet af en funktion ikke er false, så må den nødvendigvis være true" - det er helt forkert opfattet, og hvis du har
brugt det princip før, vil du opleve at din kode ikke virker altid.

Har du tænkt dig at vise spørgeren hvordan det skal være, hvis det skal
være rigtigt?
Avatar billede KingMedia Novice
11. januar 2004 - 00:56 #15
Hmmm..  er der noget jeg har gået glip af her ? :o)
Avatar billede roenving Novice
11. januar 2004 - 03:58 #16
-- og den generiske:

<!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\.\-_]+$/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 KingMedia Novice
11. januar 2004 - 14:20 #17
roenving >> hvad er forskellen på dit og det andet ?

Kan se mig frem til at *hvis* der er et felt der hedder email, så tjekker den om email formatet er gyldigt..

tjekker den også uanset hvad ens form hedder ?

Ville gerne have den til at ligge som en standard include function uanset hvilken form der skal tjekkes nemlig :o)

/Mads
Avatar billede roenving Novice
11. januar 2004 - 23:34 #18
Den tester alle felter, først om de er tomme, og derefter for hvis et felt indeholder mail i feltnavnet, om det er en gyldig email-adresse ...

-- og som du rigtigt observerer er den hylende ligeglad hvad form-navnet er !-)
Avatar billede KingMedia Novice
12. januar 2004 - 17:51 #19
roenving >>>  that's freakin' nice :-D    Tak skal du ha :-D

Og også endnu en gang tak til grunken og erikjacobsen :-D

/Mads
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