Avatar billede newbie.dk Praktikant
03. april 2005 - 00:21 Der er 13 kommentarer og
1 løsning

Validering af check-boks i en formular

Jeg har puttet nogle check-bokse ind i min formular. Disse skal så indgå i den nuværende validering.
Det må gerne laves så mindst ét felt skal vælges, og højst to må vælges.
Kan man det?

Her er et udsnit af valideringen:

<script language="javascript">
function validform(theform) {
var ok_data = true;
var tekst='Formularen er ikke udfyldt konrekt\n\n';

var filter = /^([a-zæøå]){1,}$/i;
if (theform.fornavn.value == '') {
  tekst += 'Fornavn skal udfyldes\n';
  ok_data = false;
} else { 
  if (filter.test(theform.fornavn.value) == false) {
    tekst += 'Fornavn må kun indeholder bogstaver\n';
    ok_data = false;
  }
}

var filter = /^\d+(1,3})?$/;
if (theform.alder.value == '') {
  tekst += 'Alder skal udfyldes\n';
  ok_data = false;
} else {
  if (filter.test(theform.alder.value) == false) {
    tekst += 'Alder må kun indeholde tal\n';
    ok_data = false;
  }
}

if (theform.email.value == '') {
  tekst += 'E-mail skal udfyldes\n';
  ok_data = false;
} else { 
  if(!theform.email.value.match(/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i)) {
    tekst += 'E-mail adresse skal være gyldig\n';
    ok_data = false;
  }
}

if (ok_data==false) {
  alert(tekst);
}
return ok_data; 
}
</script>
Avatar billede bromer Nybegynder
03. april 2005 - 00:25 #1
Det vil nok hjælpe lidt, hvis vi vidste hvad du kaldte dine check-bokse. Derudover så mener jeg at <script language=""> er gammelt, og du bør bruge <script type="text/javascript"/>
Avatar billede newbie.dk Praktikant
03. april 2005 - 00:31 #2
Jeg har ikke kaldt dem noget endnu. Men jeg har da en test side hvor de er i.

        <input type="checkbox" name="C1" value="ON">1.<br>
        <input type="checkbox" name="C2" value="ON">2.<br>
        <input type="checkbox" name="C3" value="ON">3.<br>
        <input type="checkbox" name="C4" value="ON">4.<br>
        <input type="checkbox" name="C5" value="ON">5.<br>
        <input type="checkbox" name="C6" value="ON">6.<br>
        <input type="checkbox" name="C7" value="ON">7.<br>

Om <script language=""> er gammelt ved jeg ikke, kender ikke meget til JS - Og denne validering har jeg fået hjælp til. Og har ikke oplevet problemer med den. Men hvis du vil forklare forskellen vil det være meget fint. Og om jeg bare kan skifte den ene linie ud, uden det påvirker resten af scriptet.
Avatar billede roenving Novice
03. april 2005 - 00:33 #3
Selve checket af dine bokse skal ske ien løkke, f.eks.

var chcks = theform.ditCheckBoksNavn,chckd = 0;
for(i=0; chcks.length>i ;i++){
  chckd += chcks[i].checked?1:0;
}
if(chckd<1||chckd>2){
  tekst += "Du skal checke en eller to checkbokse";
  ok_data = false;
}

-- og dit filter til alderen er der gået ged i ...

var filter = /^\d{1,3}$/;//tillader 1, 2 eller 3 cifre

var filter = /^[1-9]\d{0,2}$/;//tillader 1, 2 eller 3 cifre, men kun hvis det første har en værdi !-)
Avatar billede roenving Novice
03. april 2005 - 00:36 #4
Hrm, det er sværere, når de har forskellige navne, men du skal vel aflæse dem server-side ...

var chckd = 0;
for(i=1;i<=7 ;i++){
  chckd += theform.elements['C'+i].checked?1:0;
}
Avatar billede newbie.dk Praktikant
03. april 2005 - 00:45 #5
Roenving er ikke lige med på den sidste du skriver.

Men jeg bliver nok nødt til at kalde dem forskellige navne, da info'en skal ind i en database.
Avatar billede roenving Novice
03. april 2005 - 00:50 #6
var chckd = 0;
for(i=1;i<=7 ;i++){
  chckd += theform.elements['C'+i].checked?1:0;
}
if(chckd<1||chckd>2){
  tekst += "Du skal checke en eller to checkbokse";
  ok_data = false;
}
Avatar billede newbie.dk Praktikant
03. april 2005 - 00:55 #7
Kan man vist der ikke er valgt nogen få en besked, og vist der er valgt for mange få en anden besked?
Avatar billede roenving Novice
03. april 2005 - 00:58 #8
Jo det er jo bare at adskille testen af antallet ...
Avatar billede newbie.dk Praktikant
03. april 2005 - 01:15 #9
Perfekt. Det ser ud til at virke.
Ligger du et svar.

Roenving, har du en kommentar til hvad Bromer skriver?
Avatar billede roenving Novice
03. april 2005 - 01:23 #10
I dag er det et krav i html, at et script-tag indeholder en type-attribut, så selvfølgelig skal du bruge den !o]

Der er såvidt jeg ved ikke noget galt i at bruge begge, men html4-standarden kræver altså helt entydigt, at der er en type i (hvilket iøvrigt også gælder f.eks. style-tags !-)

-- og html4-standarden stammer fra 1998, så forældet kan man roligt sige, det er ikke at bruge den ...

Velbekomme '-)
Avatar billede roenving Novice
03. april 2005 - 01:23 #11
;O)
Avatar billede newbie.dk Praktikant
03. april 2005 - 02:58 #12
Den virker ikke altid.
Hvis jeg ikke har tastet noget i mine andre felter virker den. Men hvis alle andre felter er udfyldt korrekt, men ikke mine checkboks'e, går den alligevel igennem, altså ingen alert.

Jeg fandt frem til denne:

var chckd = 0;
for(i=1;i<=7 ;i++){
  chckd += theform.elements['A'+i].checked?1:0;
}
if(chckd<1){
  tekst += "Du skal vælge mindst én felt";
  ok_data = false;
} else {
if(chckd>2){
  tekst += "Du må højst vælge to felter";
  ok_data = false;
  }
}
Avatar billede newbie.dk Praktikant
03. april 2005 - 03:05 #13
Så virker den.
Jeg havde lige glemt en rettelse længere oppe.
Avatar billede roenving Novice
03. april 2005 - 16:26 #14
Tak for point, så ;~}
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