Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 12:10 Der er 23 kommentarer og
2 løsninger

Dynamisk form validering

Jeg har en form

I den form henter jeg x antal sæt af checkbokse

Feks:
Sæt 1 = 6 checkbokse med navnet 1
Sæt 2 = 6 checkbokse med navnet 2

Antallet af sæt kender jeg ikke derfor looper jeg dem.

For hvert sæt checkbokse har jeg i databasen specificeret hvor mange af checkboksene der som minimum skal checkes af bruger.

Feks:
Sæt 1 = 6 checkbokse med navnet 1 minimum 3 check
Sæt 2 = 6 checkbokse med navnet 2 minimum 4 check

Når man så klikker på submit skal min validering undersøge om antallet af de checkbokse der skal checkes nu også er checked.

Jeg har fundet nedenstående script som måske kunne være et fundament men min javascript viden er ikke stor nok..desværre.

Koden er:

<script language="JavaScript">
function antalChecked(theform) {
var antalOn = 0;
if (document.all || document.getElementById) {
  for (i = 0; i < theform.length; i++) {
    var tempobj = theform.elements[i];
    if (tempobj.name.toLowerCase() == "6" && tempobj.checked == true)
      antalOn = antalOn + 1;
  }
}
return antalOn;
}


function validForm(theform) {
  var antal;
  antal = antalChecked(theform);
  if (antal < 7) {
    alert ("Minimum 7 skal vælges");
    return false;
  }
  return true;
}
</script>
Avatar billede roenving Novice
20. februar 2005 - 12:13 #1
Hvor har du oplysningen om hvor mange der skal checkes i hver gruppe ?-)
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 12:18 #2
ja det ved jeg fra databasen
Avatar billede roenving Novice
20. februar 2005 - 12:21 #3
Hvis du skal gøre noget med javascript, skal oplysningen være til rådighed for javascript, altså enten skrevet et eller andet sted i dokumentet, hvor det kan aflæses, eller oprettet som javascript-variabel !-)
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 12:22 #4
Det kan man vel også godt eller hvad

jeg kan jo hente den ud fra databasen...
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 12:23 #5
det jeg tænker på er et javascript generet fra databasen? Er det helt ude i hampen
Avatar billede roenving Novice
20. februar 2005 - 12:34 #6
Nej, det er det ikke, for du kan f.eks.

<script type="text/javascript">
var nums = new Array();

//Dette kan du lade dit databasescript udskrive
nums['1'] = 3;
nums['2'] = 4;

function valider(f){
  for(a in nums){
    if(antalChecked(f,a) < nums[a]){
      alert('Fejl:\n\tFor få afkrydsninger i " + a);
      return false;
    }
  }
}

function antalChecked(f,a){
  var e = f.elements,numChecked=0;
  for(i=0;i<e.length;i++){
    if(e[i].type=='checkbox'&&e[i].name==a&&e[i].checked)
      numChecked++;
  }
  return numChecked;
}
</script>
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 12:52 #7
mener du at jeg her:

nums['1'] = 3;
nums['2'] = 4;


bare kan lave en løkke der skriver nums[Id fra database] = antal check fra databasen?
Avatar billede roenving Novice
20. februar 2005 - 12:56 #8
Jeps !-)

-- forøvrigt vil jeg dea anbefale, at du laver et anderledes navngivningsskema for dine checkbokse, da et tal først i en identifikator er ugyldig stort set alle andre steder, f.eks. som id eller javascript-variabel ...

Så f.eks. c1, c2 osv. !o]
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:00 #9
jeg prøver det lige...
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:03 #10
hvis jeg ændrer navngivningen af mine checkboxe...har det så ikke indflydelse på dit script....


jeg kalder dem så tjek[id]
Avatar billede roenving Novice
20. februar 2005 - 13:05 #11
Næh, fordi jeg bruger in-operatoren er det for scriptet helt ligegyldigt, hvad du kalder dem !-)
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:07 #12
scriptet ser lidt sjovt ud i dreamweaver...det er som der er en fejl et sted...men jeg tjekker det lige
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:12 #13
hvordan skal min form køre scriptet...onsubmit eller...
Avatar billede roenving Novice
20. februar 2005 - 13:14 #14
Det er en god ide !-)

<form ... onsubmit="return valider(this);">

-- og så tilføje en return true, hvis det er rigtigt udfyldt:

function valider(f){
  for(a in nums){
    if(antalChecked(f,a) < nums[a]){
      alert('Fejl:\n\tFor få afkrydsninger i " + a);
      return false;
    }
  }
  return true;
}
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:15 #15
mangler der ikke en ' i:

alert('Fejl:\n\tFor få afkrydsninger i " + a);
Avatar billede roenving Novice
20. februar 2005 - 13:17 #16
-- jo, jeg er kommet til at starte med ' og slutte med "", altså:

alert('Fejl:\n\tFor få afkrydsninger i ' + a);
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:35 #17
Den siger at der er for få afkrydsninger lige meget hvormange man krydser...kn det være fordi løkken ikke laver et <bR> mellem numserne:-)

herunder er scriptet efter af løkken er kørt

<script type="text/javascript">
var nums = new Array();
nums['6'] = 4;nums['7'] = 5;

function valider(f){
  for(a in nums){
    if(antalChecked(f,a) < nums[a]){
    alert('Fejl:\n\tFor få afkrydsninger i ' + a);
      return false;
    }
  }
}
function antalChecked(f,a){
  var e = f.elements,numChecked=0;
  for(i=0;i<e.length;i++){
    if(e[i].type=='checkbox'&&e[i].name==a&&e[i].checked)
      numChecked++;
  }
  return numChecked;
}

</script>
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:40 #18
hhhååårlllddd  det virker!!!!! det var det der med at navngive afkrydsningsfelterne...

et lille tillægsspørgsmål som du kan vælge ikke at svare på men....

jeg har også et felt med fra databasen der hedder minimums bestilling som man kan udfylde hvis man skal bestille et bestemt antal varer...kan man inkoporere det i dit script....feltet den skal tjekke hedder antal og værdien har jeg i basen...
Avatar billede roenving Novice
20. februar 2005 - 13:45 #19
Ja, f.eks.

<script type="text/javascript">
var nums = new Array();
nums['6'] = 4;nums['7'] = 5;
var min = 25;//tallet fra databasen !-)

function valider(f){
  for(a in nums){
    if(antalChecked(f,a) < nums[a]){
      alert('Fejl:\n\tFor få afkrydsninger i ' + a);
      return false;
    }
  }
  if(+f.antal.value < min){
    alert('Fejl:\n\tAntal varer under minimum');
    return false;
  }
  return true;
}
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 13:50 #20
citroner er sure siger noen....:-D

tusind tak for hjælpen....

smid et svar
Avatar billede roenving Novice
20. februar 2005 - 14:11 #21
Velbekomme '-)

-- men behold langt de fleste selv, det er over 3 gange for mange point, du har ude i dette spørgsmål !-)
Avatar billede roenving Novice
20. februar 2005 - 14:11 #22
;O)
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 14:29 #23
ok jeg nupper 50 tilbage..-...:-)
Avatar billede roenving Novice
20. februar 2005 - 14:37 #24
Tak for point ;~}
Avatar billede pleasehelpme Nybegynder
20. februar 2005 - 16:54 #25
np
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