Avatar billede hansen Nybegynder
06. januar 2006 - 10:35 Der er 7 kommentarer

Valider checkbox

Jeg har brug for lidt hjælp til en gang validering, jeg har en masse felter, kan være flere end her, hvor der skal valideres på om bare et af felterne er checket af, den må ikke submittes tom.

Min standardting virker ikke, den kommer med en Alertbox rigtigt nok, men ved accept på alert boc, submitter den alligevel !

Hvad går der galt her?

    if(!theform.pk_usergroup.checked)
    {
      alert("Fejbesked
      theform.pk_usergroup.focus();
      return false;
    }

<input type="checkbox" name="pk_usergroup" value="16">16<br>
<input type="checkbox" name="pk_usergroup" value="28">28<br>
<input type="checkbox" name="pk_usergroup" value="22">22<br>
<input type="checkbox" name="pk_usergroup" value="1d">1d<br>
<input type="checkbox" name="pk_usergroup" value="26">26<br>
<input type="checkbox" name="pk_usergroup" value="27">27<br>
<input type="checkbox" name="pk_usergroup" value="17">17<br>
<input type="checkbox" name="pk_usergroup" value="23">23<br>
Avatar billede mm12010 Nybegynder
06. januar 2006 - 10:53 #1
hvordan kalder du valideringen? og hvorfor har du en række checkboxe med samme navn i stedet for radio's?
Avatar billede hansen Nybegynder
06. januar 2006 - 11:14 #2
med en  onclick="java script:validateForm(document.forms[0],true);"

Der er en række checkbokse med samme navn der bliver trukket fra en DB, herefter bliver de høvlet igennem når de ligges tilbage med et loop
Avatar billede mm12010 Nybegynder
06. januar 2006 - 12:21 #3
du bør give dine checkboxe unikke navne hvilket let kan gøres ved at tilføje et fortløbende tal i udskriften - hvis kriteriet er at der skal vælges én og kun én bør du i stedet lave radiogroup
Avatar billede hansen Nybegynder
06. januar 2006 - 12:39 #4
Enig, men systemet er sådan at der samles sammen til et array som loopes igennem. Der kan ikke bruges Radiobutton da der godt må krydses af i alle felter.

Der skal blot testes for at der er sat et kryds i værdien pk_usergroup, er der det skal der ikke tjekkes for mere.
Avatar billede johan.o Nybegynder
07. januar 2006 - 02:53 #5
Måske dette kan hjælpe :

<form onsubmit="return validate(this,true);">

Mvh. Johan
Avatar billede johan.o Nybegynder
07. januar 2006 - 02:54 #6
Hov skulle være onsubmit="return validateForm(this,true);" naturligvis :)
Avatar billede roenving Novice
09. januar 2006 - 16:58 #7
-- da det er et array af form-elementer, skal du selvfølgelig loope igennem dem:

    var elms = theform.elements["pk_usergroup"],chckd=false;
    for(i=0;elms.length>i;i++)
      chckd = chckd || elms[i].checked;
    if(!chckd){
      alert("Fejbesked");
      elms[0].focus();
      return false;
    }

-- og så skal du absolut gøre som johan.o anbefaler, for der er jo ingen grund til at gå over åen efter vand eller at have problemer med submit af formen alligevel, og det sikrer, at du på et senere tidspunkt kan benytte kaldet, selvom I ændrer f.eks. navngivningsskema !-)
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