Avatar billede lordnelson Seniormester
02. januar 2007 - 20:15 Der er 8 kommentarer og
1 løsning

Vlidering af et felt(er)

Hej
bruger et javascript til validering af felter i min formular
Men det ene felt kan gengives mange gange bliver lavet i en løkke, hvis bruger vælger 5 deltagere kommer der 5 tekst felter
hvori man kan skrive et navn, felterne hedder navn
kan man validerer disse?

Hilsen
LN
Avatar billede mclemens Nybegynder
02. januar 2007 - 21:41 #1
Ja, det kan man...


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title><meta name="robots" content="index, follow">

<style type="text/css">

</style>



<script type="text/javascript">
function valider(){
  navne=document.getElementsByName("navn")
  for(i=0;i<navne.length;i++){
    if(navne[i].value=="")alert("Navn"+(i+1)+" skal indeholde noget");
  }
}
</script>

</head><body>

<input type="text" name="navn">
<input type="text" name="navn">
<input type="text" name="navn">
<input type="text" name="navn">
<input type="text" name="navn">

<b onclick="valider();">Valider</b>
</body></html>
Avatar billede crazysnap Seniormester
02. januar 2007 - 21:57 #2
Hej LN,

Det kan man sagtens og der er mange måder at gøre det på.
Én metode er: hvis løkken looper over en variabel "i" kan du f.eks. give felterne et unikt id (i stedet for at de alle hedder det samme):


var i;
for(i = 0; i < AntalDeltagere; i++)
{
    //Kode for at lave et nyt felt.
    //Nedenfor gives det nye felt id
    felt.id = "navn" + i;
}


Du kan så i valideringsmetoden hente de nye dynamisk tilføjede felter ved brug af getElementById metoden og validere deres indhold:


for(i = 0; i < AntalDeltagere; i++)
{
    //Hent et navne-felt
    var tempFelt = document.getElementById("navn" + i);

    //Kald metoden som validerer et enkelt felt (returnerer true hvis
    //feltet er udfyldt korrekt og ellers false)
    if(!Validate(tempFelt))
    {
        //Feltet indeholdt en invalid streng
        //Indsæt kode til at håndtere dette
    }
}


Håber det løser din problemstilling (hvis jeg har forstået problemet korrekt)


- Snap
Avatar billede lordnelson Seniormester
03. januar 2007 - 08:59 #3
har givet point til mclemens
men en lille hjælp til
at forhindre den at submitte formen
ville være dejligt???

Hilsen
Ln
Avatar billede crazysnap Seniormester
03. januar 2007 - 09:39 #4
Hej igen LN,

Nu kommer det an på hvordan du har lavet det, men hvis du har en:

<input type="submit" name="SubmitKnap" value="Submit Formen">

der har en onClick attribute som kalder valideringsmetoden er den typiske fejl at glemme "return" keywordet foran valideringsmetode-kaldet.

Så i stedet for:

<input type="submit" onClick="ValidateForm()" name="SubmitKnap" value="Submit Formen">

Skal der stå:

<input type="submit" onClick="return ValidateForm()" name="SubmitKnap" value="Submit Formen">

Når ValidateForm() returnerer false bliver din form ikke "submittet", men hvis den returnerer true gør den.
Avatar billede mclemens Nybegynder
03. januar 2007 - 09:59 #5
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title><meta name="robots" content="index, follow">

<script type="text/javascript">
function valider(){

  navnerr="Formularen blev ikke afsendt grundet:"; // Start tekst til fejl

  navne=document.getElementsByName("navn"); // Tildeler navne array af elementer med name="navn"

  for(i=0;i<navne.length;i++){ // Gennemløber navne array af elementer
    if(navne[i].value=="")navnerr+="\nNavn"+(i+1)+" skal indeholde noget"; // Hvis navnet ikke indeholder registreres fejl
  }

  if(navnerr=="Formularen blev ikke afsendt grundet:")return true; // Hvis start tekst er standard så afsend
  else{
    alert(navnerr); // ved fejl så alert
    return false; // og stop afsendelse
  }
}
</script>

</head><body>
<form method="get" action="1.html" onsubmit="return valider();">
1:<input type="text" name="navn"><br>
2:<input type="text" name="navn"><br>
3:<input type="text" name="navn"><br>
4:<input type="text" name="navn"><br>
5:<input type="text" name="navn"><br>
<input type="submit" value="afsend"><br>
</form>

</body></html>
Avatar billede mclemens Nybegynder
03. januar 2007 - 09:59 #6
Og tak for point :)
Avatar billede lordnelson Seniormester
03. januar 2007 - 10:37 #7
hej mcclemens
Send et svar så du får nogle felere point (hvis man kan)
ellers opretter jeg et nyt spørgsmål til dig
kunne dy med det samme udvide det lidt med et par normale felter?
feks. adressefelt og kontaktfelt så skal jeg nok lave det færdigt selv?

Tak for hjælpen

LN
Avatar billede mclemens Nybegynder
03. januar 2007 - 10:58 #8
Hej LN,
Når spørgsmålet er lukket kan der ikke
tildeles flere point, det behøves heller ikke.
Jeg har lige tilføjet de to felter du nævnte.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title><meta name="robots" content="index, follow">

<script type="text/javascript">
function valider(){

  navnerr="Formularen blev ikke afsendt grundet:"; // Start tekst til fejl

  navne=document.getElementsByName("navn"); // Tildeler navne array af elementer med name="navn"

  for(i=0;i<navne.length;i++){ // Gennemløber navne array af elementer
    if(navne[i].value=="")navnerr+="\nNavn"+(i+1)+" skal indeholde noget"; // Hvis navnet ikke indeholder registreres fejl
  }

  if(document.getElementsByName("adresse")[0].value=="")navnerr+="\nAdresse skal indeholde noget"; // Hvis adresse ikke indeholder registreres fejl
  if(document.getElementsByName("kontakt")[0].value=="")navnerr+="\nKontakt skal indeholde noget"; // Hvis kontakt ikke indeholder registreres fejl

  if(navnerr=="Formularen blev ikke afsendt grundet:")return true; // Hvis start tekst er standard så afsend
  else{
    alert(navnerr); // ved fejl så alert
    return false; // og stop afsendelse
  }
}
</script>

</head><body>
<form method="get" action="1.html" onsubmit="return valider();">
1:<input type="text" name="navn"><br>
2:<input type="text" name="navn"><br>
3:<input type="text" name="navn"><br>
4:<input type="text" name="navn"><br>
5:<input type="text" name="navn"><br>
Adresse:<input type="text" name="adresse"><br>
Kontakt:<input type="text" name="kontakt"><br>
<input type="submit" value="afsend"><br>
</form>

</body></html>
Avatar billede lordnelson Seniormester
03. januar 2007 - 11:20 #9
Bare så elegant
Skylder dig point ........................

Hilsen
LN
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