Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 21:00 Der er 23 kommentarer og
1 løsning

Knap der validerer en formular

Hej Eksperter,

Jeg leder efter lidt hjælp til at lave et javaScript der validerer en formular.


Formularen der skal valideres ser sådan ud:

<----------------------------------------------------->


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
<head>
<title> Tilmelding Ledelseslinien </title>
<style type="text/css">

body{
  font-family:verdana;
  font-size:9px;
 

}
</style>
</head>
<body>
<form method="post" action="tilmelding_ledelse.php">
<small>Felter med * skal udfyldes.</small>
<table border="1" cellspacing="0">
<tr>
<td>



CPR nr. :</td><td><input type="text" name="cpr" size="15"  maxlength="11"> *(xxxxxx-xxxx)</td>
</tr>
<tr>
<td>

Efteravn: </td><td><input type="text" name="efternavn" size="40">*<br/>
</td>
</tr>
<tr>
<td>
Fornavn:</td><td> <input type="text" name="navn" size="40">*<br/>
</td>
</tr>
<tr>
<td>

Adresse: </td><td><input type="text" name="adresse" size="40">*<br/>
</td>
</tr>

<tr>
<td>

Post nr:</td><td> <input type="text" name="postnr" size="15" maxlength="4">*<br/>
</td>
</tr>
<tr>
<td>
by: </td><td><input type="text" name="by" size="15">* <br/>
</td>
</tr>

<tr>
<td>Telefon:</td>
</tr>
<tr>

<td>
Privat:
</td>
<td>

<input type="text" name="tlfPrivat" size="20">
</td>
</tr>

<tr>
<td>Firma:</td><td><input type="text" name="tlfFirma" size="20"></td></tr>

<tr>
<td>
E-mail:</td>
<td><input type="text" name="email" size="20"></td>
</tr>
<tr>
<td>

</td>
<td>
  Betaler (udfyldes hvis anden part skal betale for kurser)
</td>
</tr>
<tr>
<td>
Firma:
</td>
<td>
<input type="text" name="firmabetaler">
</td>
</tr>
<tr>
<td>
CVR Nr.
</td>
<td>
<input type="text" name="cvrnr" maxlength="8">
</td>
</tr>
<tr>
<td>
Adresse:
</td>
<td>
<input type="text" name="adressefirma" >
</td>
</tr>
<tr>
<td>
Post Nr.
</td>
<td>
<input type="text" name="postnrfirma"  size="15" maxlength="4">
</td>
</tr>
<tr>
<td>
By:
</td>
<td>
<input type="text" name="byfirma"  size="15">
</td>
</tr>




<tr>
<td>
<input type="submit" value="send">
</td>
<td>
<input name="reset" type="reset" value="Nulstil tilmelding" >
</td>
</tr>
<tr>
</table>
<br />
<table border="1" cellspacing="0">
<tr>
<td>1.del</td>
<td>Start januar 2006</td>
<td>Pris</td>
</tr>
<tr>
<td>
Organisation
</td>
<td>
<input type="checkbox" name="organisation" value="organisationJan06">
</td>
<td>
3.350
</td>
</tr>
</table>

</form>
</html>
<------------------------------------------------------>


formularen bliver sendt videre til en PHP formularer der så behandler de indtastede data der så udskriver dem.



Håber en gider hjælpe!?
Avatar billede psykochicken Nybegynder
27. oktober 2005 - 22:06 #1
den simple:
<script type="text/javascript">
function valider(){
  for(i=1;i<=6;i++){
    var a = document.getElementById('tekst' + i);
    if(a.value==0){
      alert('du skal udfylde alle felter med *');
      return false;
    }
  }
}
</script>
</head>
<body>
<form method="post" action="tilmelding_ledelse.php" onsubmit="return valider();">

og så giver du de 6 tekstfelter, der skal udfyldes id med fortløbende numre:
<input type="text" id="tekst1" name="cpr" size="15"  maxlength="11"> *(xxxxxx-xxxx)<input type="text" id="tekst2" name="efternavn" size="40">*<br/>
...osv

/psc
Avatar billede foxmulder58 Praktikant
27. oktober 2005 - 23:50 #2
Hej Psychochicken (fedt brugernavn btw.) jeg kigger på det imorgen.

Du skal nok få point!

mvh
Mads
Avatar billede erikjacobsen Ekspert
27. oktober 2005 - 23:53 #3
psychochicken glemmer at sige
    return true;
hvis valideringen går godt.
Avatar billede psykochicken Nybegynder
28. oktober 2005 - 00:06 #4
fox>> vent med pointene til det virker ;)

..og for at gøre erikjacobsen glad:
<script type="text/javascript">
function valider(){
  for(i=1;i<=6;i++){
    var a = document.getElementById('tekst' + i);
    if(a.value==0){
      alert('du skal udfylde alle felter med *');
      return false;
    }
    else {
      return true;
    }
  }
}
</script>

!-)
Avatar billede erikjacobsen Ekspert
28. oktober 2005 - 00:19 #5
Nej, ikke der.
Avatar billede psykochicken Nybegynder
28. oktober 2005 - 09:08 #6
nå, du mener efter "return valider();" - vil den ikke validere fint uden ?
Avatar billede roenving Novice
28. oktober 2005 - 09:13 #7
-- når alle felter er kontrolleret, og der ikke i mellemtiden er sendt retur med falsk, skal der sendes tilbage med sand !-)
Avatar billede psykochicken Nybegynder
28. oktober 2005 - 10:12 #8
roenving>> jeg kan godt se logikken, men hvorfor validere den så fint uden ?
Avatar billede roenving Novice
28. oktober 2005 - 10:22 #9
Valideringen sker fint, men den sender hvis der ikke er en return true, selvom du forsøger at afbryde med return false !-)

-- den har jeg heller ikke gennemskuet logikken i, men har måttet konstatere, at den gør sådan !o]
Avatar billede erikjacobsen Ekspert
28. oktober 2005 - 10:38 #10
Hvis du mener hvorfor 27/10-2005 22:06:38 ser ud til at virke, så er det fordi den tilfældigt en gang i mellem alligevel får værdien true, selv om du ikke sætter den.
Men det afhænger af hvilken browser du har, hvilke scripts der er kørt før, hvad vej vinden blæser. Men det skal du ikke tænke over. Du skal bare sørge for den siger "return true;" hvis al validering er i orden (det gør den ikke i 28/10-2005 00:06:33).
Avatar billede thomas_yde Nybegynder
28. oktober 2005 - 10:39 #11
Tror Erik mener du skal placere efter du har loopet igennem alle tekst felterne.

<script type="text/javascript">
function valider(){
  for(i=1;i<=6;i++){
    var a = document.getElementById('tekst' + i);
    if(a.value==0){
      alert('du skal udfylde alle felter med *');
      return false;
    }
  }
  return true;
}
</script>
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 11:06 #12
Jeg er ikke helt sikker på hvad i mener lige nu, jeg er lidt forvirret.

For kort at ridse op, så sendes denne formular til et dokument der blot udskriver i browseren hvad brugeren har indtastet.

Jeg vil gerne have et JavaScript der inden der sendes til PHP delen sørger for at felter markeret med * er udfyldt inden.


Er i med så vidt.

Hvor skal placeringen af JavaScritet være i <head> delen eller <body> delen?


mvh
mads
Avatar billede erikjacobsen Ekspert
28. oktober 2005 - 11:14 #13
I <head>. Og ret så også

      if(a.value==0){

til

      if(a.value==""){
Avatar billede roenving Novice
28. oktober 2005 - 11:17 #14
Da det nu er de første 6 felter, kan du f.eks. gøre sådan:

<form method="post" action="tilmelding_ledelse.php" onsubmit="return valider(this);">

<script type="text/javascript">
function valider(f){
  var e = f.getElementsByTagName("input"),num = 0,i=0;
  while(num<6){
    if(e[i].type == "text"){
      num++;
      if(e[i].value == ""){
        alert("Alle felter med * skal udfyldes !-)");
        e[i].focus();
        return false;
      }
    }
    i++;
  }
  return true;
}
</script>
Avatar billede roenving Novice
28. oktober 2005 - 11:18 #15
-- og scriptet kan principielt ligge hvorsomhelst indenfor <html></html>, men jeg lægger det som regel i head-sektionen, bl.a. fordi det så er nemt at kopiere ud i et eksternt script, når man har et fuldt fungerende dokument !-)
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 11:19 #16
Tja den alert boks dukker ikke op den sender bare videre:

Du kan se det her:

http://netau.dk.linux14.wannafind.dk/formular_ledelse.htm



og her er koden:

<---------------------------------------------------------------->


<body>
<form method="post" action="tilmelding_ledelse.php">
<script type="text/javascript">
function valider(f){
  var e = f.getElementsByTagName("input"),num = 0,i=0;
  while(num<6){
    if(e[i].type == "text"){
      num++;
      if(e[i].value == ""){
        alert("Alle felter med * skal udfyldes !-)");
        e[i].focus();
        return false;
      }
    }
    i++;
  }
  return true;
}
</script>
<table id="minTabel1">
<tr>
<td>

<center><small>Felter med * skal udfyldes.</small></center>
<table id="minTabel2">
<tr>
<td>



CPR nr. :</td><td><input type="text" name="cpr" size="15"  maxlength="11"> *(xxxxxx-xxxx)</td>
</tr>
<tr>
<td>

Efteravn: </td><td><input type="text" name="efternavn" size="40">*<br/>
</td>
</tr>
<tr>
<td>
Fornavn:</td><td> <input type="text" name="navn" size="40">*<br/>
</td>
</tr>
<tr>
<td>

Adresse: </td><td><input type="text" name="adresse" size="40">*<br/>
</td>
</tr>

<tr>
<td>

Post nr:</td><td> <input type="text" name="postnr" size="15" maxlength="4">*<br/>
</td>
</tr>
<tr>
<td>
by: </td><td><input type="text" name="by" size="15">* <br/>
</td>
</tr>

<tr>
<td>Telefon:</td>
</tr>
<tr>

<td>
Privat:
</td>
<td>

<input type="text" name="tlfPrivat" size="20">
</td>
</tr>

<tr>
<td>Firma:</td><td><input type="text" name="tlfFirma" size="20"></td></tr>

<tr>
<td>
E-mail:</td>
<td><input type="text" name="email" size="20"></td>
</tr>
<tr>
<td>

</td>
<td>
  Betaler (udfyldes hvis anden part skal betale for kurser)
</td>
</tr>
<tr>
<td>
Firma:
</td>
<td>
<input type="text" name="firmabetaler">
</td>
</tr>
<tr>
<td>
CVR Nr.
</td>
<td>
<input type="text" name="cvrnr" maxlength="8">
</td>
</tr>
<tr>
<td>
Adresse:
</td>
<td>
<input type="text" name="adressefirma" >
</td>
</tr>
<tr>
<td>
Post Nr.
</td>
<td>
<input type="text" name="postnrfirma"  size="15" maxlength="4">
</td>
</tr>
<tr>
<td>
By:
</td>
<td>
<input type="text" name="byfirma"  size="15">
</td>
</tr>





</table>
<br />
<table id="minTabel2">
<tr>
<td>1.del</td>
<td>Start januar 2006</td>
<td>Pris</td>
</tr>
<tr>
<td>
Organisation
</td>
<td>
<input type="checkbox" name="organisation" value="organisationJan06">
</td>
<td>
3.350
</td>
</tr>




<tr>
<td>
<input type="submit" value="send">
</td>
<td>
<input name="reset" type="reset" value="Nulstil tilmelding" >
</td>
</tr>
<tr>
</table>
</table>

</form>
Avatar billede roenving Novice
28. oktober 2005 - 11:21 #17
Du har jo heller ikke sat form-tagget ind, som jeg skrev det !-)
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 11:35 #18
Nej godaw mand økseskaft! LOL!
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 11:42 #19
hvordan skal point fordeles i dette spørgsmål!?
Avatar billede psykochicken Nybegynder
28. oktober 2005 - 12:34 #20
Giv roenving point - det var hans løsning du brugte.
...jeg takker for lidt lærdom ;-)
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 13:45 #21
Roenving --> smider du et svar?

Til jer andre 1000 tak for deltagelse!
Avatar billede foxmulder58 Praktikant
28. oktober 2005 - 14:23 #22
Hej Roenving,

jeg logger af nu, og er tilbage på eksperten.dk  så accepterer jeg dit svar dér.


Endnu engang tusind tak for hjælpen!
Avatar billede roenving Novice
30. oktober 2005 - 23:31 #23
Så velbekomme '-)
Avatar billede roenving Novice
31. oktober 2005 - 13:22 #24
-- 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