03. april 2005 - 00:21Der 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>
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"/>
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.
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 !-)
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; }
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 ...
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; } }
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.