Avatar billede zicko Nybegynder
10. februar 2006 - 13:24 Der er 28 kommentarer og
2 løsninger

Hvordan validerer man flere grupper med radiobuttons og andet?

Jeg har en form som skal bruges til at udfylde et stort spørgeskema, i skemaet skal indgå 4 grupper med radiobuttons, med fem valgmuligheder i 2 af dem og 4 i de sidste tre.

Så er der 2 tekstfelter, og én select box.

Nu er mit spørgsmål så, hvordan får jeg valideret dem alle på én gang, inden resultatet bliver sendt til serveren, så jeg undgår felter der ikke er udfyldt.

Jeg har prøvet følgende, som virker fint til at validere én gruppe, men har ingen anelse om hvordan jeg kan udbygge den? ;)

<HTML>
<HEAD>
<TITLE>Spørgeskema</TITLE>
<SCRIPT>
function validate() {
DIMSOK=false;
for (dims=0;dims<5;dims++) {
if (mainform.Q1[dims].checked) DIMSOK=true;
}
if (!DIMSOK) {
alert('Feltet "Dims" skal udfyldes.');
event.returnValue=false;
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="mainform" METHOD="post" onsubmit="validate();">
<BR>
<INPUT TYPE="RADIO" NAME="Q1" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q1" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q1" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q1" VALUE="4">4
<INPUT TYPE="RADIO" NAME="Q1" VALUE="5">5
<BR>
<INPUT TYPE="RADIO" NAME="Q2" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q2" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q2" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q2" VALUE="4">4
<BR>
Alder: <input type="text" name="Q3" size="4">
<BR>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>
Avatar billede olebole Juniormester
10. februar 2006 - 14:28 #1
<ole>

<HTML>
<HEAD>
<TITLE>Spørgeskema</TITLE>
<SCRIPT>
function validate(f) {
    DIMSOK=false;
   
    for (var i=0; i<f.Q1.length; i++) if (f.Q1[i].checked) DIMSOK=true;
    if (!DIMSOK) {
        alert("Vælg en radio i første gruppe");
        return false;
    }
   
    DIMSOK=false;
    for (var i=0; i<f.Q2.length; i++) if (f.Q2[i].checked) DIMSOK=true;
    if (!DIMSOK) {
        alert("Vælg en radio i anden gruppe");
        return false;
    }
   
    if (f.Q3.value=="") {
        alert("Skriv noget i feltet");
        return false;
    }
    return true;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="mainform" METHOD="post" onsubmit="return validate(this);">
<BR>
<INPUT TYPE="RADIO" NAME="Q1" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q1" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q1" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q1" VALUE="4">4
<INPUT TYPE="RADIO" NAME="Q1" VALUE="5">5
<BR>
<INPUT TYPE="RADIO" NAME="Q2" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q2" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q2" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q2" VALUE="4">4
<BR>
Alder: <input type="text" name="Q3" size="4">
<BR>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

/mvh
</bole>
Avatar billede horsmark Nybegynder
10. februar 2006 - 14:29 #2
<HTML>
<HEAD>
<TITLE>Spørgeskema</TITLE>
<SCRIPT type="text/javascript">
function validate() {
var returnString = "";
//Q1
if ( !isRadioGrpChecked('Q1') ) returnString +="Du mangler at afkrydse Q1\n"
if ( !isRadioGrpChecked('Q2') ) returnString +="Du mangler at afkrydse Q2\n"
if ( document.getElementById('Q3').value == "" )  returnString +="Du mangler at indtaste navn\n"
if ( returnString != "" ) {
    alert(returnString)
    return false
}
return true
}


function isRadioGrpChecked(name){
var radioGrp = document.getElementsByName(name)
var isChecked = false
for (var i=0;i<radioGrp.length;i++) {
  if (radioGrp[i].checked) isChecked = true
}
return isChecked
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="mainform" METHOD="post" onsubmit="return validate();">
<BR>
<INPUT TYPE="RADIO" NAME="Q1" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q1" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q1" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q1" VALUE="4">4
<INPUT TYPE="RADIO" NAME="Q1" VALUE="5">5
<BR>
<INPUT TYPE="RADIO" NAME="Q2" VALUE="1">1
<INPUT TYPE="RADIO" NAME="Q2" VALUE="2">2
<INPUT TYPE="RADIO" NAME="Q2" VALUE="3">3
<INPUT TYPE="RADIO" NAME="Q2" VALUE="4">4
<BR>
Alder: <input type="text" id="Q3" name="Q3" size="4">
<BR>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>
Avatar billede horsmark Nybegynder
10. februar 2006 - 14:30 #3
dammit 1 minut for sent på den ;-)
Avatar billede olebole Juniormester
10. februar 2006 - 14:31 #4
;D
Avatar billede olebole Juniormester
10. februar 2006 - 14:32 #5
Der er masser af points, Hesten - så vi kan vel bare dele  :)
Avatar billede horsmark Nybegynder
10. februar 2006 - 14:35 #6
arj jeg ville så gerne komme først...
Avatar billede olebole Juniormester
10. februar 2006 - 15:14 #7
jaja ... det vil de dér gallopheste zq altid  ;D
Avatar billede horsmark Nybegynder
10. februar 2006 - 15:22 #8
*GGG*
Avatar billede zicko Nybegynder
10. februar 2006 - 16:29 #9
godt nok imponerende må jeg sige :) Glæder mig til at komme hjem og afprøve det, i ska' nok få begge to hvis i lige smider et svar! så hæver jeg den lige til 200 så i får 100 hver hvis det er i orden ? ;)
Avatar billede olebole Juniormester
10. februar 2006 - 16:32 #10
Jeg vil være mere end tilfreds med de 75, der fremkommer ved at splitte de 150 i to  :)
Avatar billede horsmark Nybegynder
10. februar 2006 - 17:02 #11
yes det er sq mange point for dette spørgsmål... !! :-) Du er ikke fra Jylland fornemmer jeg *GGG*
Avatar billede olebole Juniormester
10. februar 2006 - 17:59 #12
- spurgte hingsten fra Hjallerup  *LoL*
Avatar billede horsmark Nybegynder
10. februar 2006 - 18:05 #13
*muarhahaha*
Avatar billede olebole Juniormester
10. februar 2006 - 18:15 #14
zicko >> undskyld, vi spammer dit spm. på mest infantile måde. Vi er begge brugere, der har været her længe - og kender efterhånden hinanden ret godt. Desuden har vi vist begge en svaghed for pubertær humor ... bær venligst over med os  ;D
Avatar billede horsmark Nybegynder
10. februar 2006 - 20:10 #15
Jeg er enig, nikker og bukker og siger undskyld i kor med olebole og migselv
Avatar billede zicko Nybegynder
13. februar 2006 - 09:13 #16
hehe.. i er sære.. og nej jeg er ikke fra Jylland.. men der var godt nok lang vej hjem ;) beklager.. blev bare lige overrumplet af nogle andre opgaver der havde højere prioritet.. så har først tid til at kigge på det nu.. Bare lige et lille ekstra spørgsmål hvis det er iorden, er det muligt også at checke et par af tekstfelterne for at sikre at de kun indeholder talværdier?
Avatar billede horsmark Nybegynder
13. februar 2006 - 11:31 #17
if ( !isNumber( document.getElementById('postnummer').value, 4 ) ){
returnString += "Du skal angive postnummer som tal og med 4 cifre\n"
}

....

function isNumber( s, numberOfDigits ) {
    var re = new RegExp("^\\s*\\d{"+numberOfDigits+"}\\s*$");
    return re.test( s );
}
Avatar billede olebole Juniormester
13. februar 2006 - 13:57 #18
- men pas på med postnumre. Der er en del danske på 3 ciffre - og så er der en hel del danske pendlere, der har bosat sig i f.eks. Malmö. Hvis de også skal have adgang, skal valideringen tilpasses dette  :)
Avatar billede zicko Nybegynder
13. februar 2006 - 15:26 #19
Hmm.. nu prøvede jeg at sætte scriptet fra Horsmark ind i spørgeskemaet, men den virker ik helt efter hensigten.. eller rettere.. det virker slet ikke.. må ærligt indrømme at JS ikke lige er min stærke side.. aner ikke hvordan skidtet fungerer så jeg har bare prøvet mig frem.. Er der en af jer der måske lige kunne kigge på kilden hvor jeg har sat det ind og se hvor kæden knækker? så må jeg lige tage den med valideringen af tal bagefter ;)

kilden kan findes her: http://www.palne.dk/rikkes/svar_form2.asp
Avatar billede horsmark Nybegynder
13. februar 2006 - 15:34 #20
HOLD DA KÆFT HVOR GRINEREN.... det er et heste spørgeskema *LOOOOOL*
Avatar billede horsmark Nybegynder
13. februar 2006 - 15:37 #21
1. alle de gange du bruger getElementById skal du selvfølgeligt have en id attribut på elementet eks:
duer ikke -> <input name="hestens_navn" value="jesper horsmark">
skal være -> <input id="hestens_navn" name="hestens_navn" value="jesper horsmark">
Avatar billede olebole Juniormester
13. februar 2006 - 15:49 #22
Tak for karrrffe ...!!! Så strutter det hele på den gamle hingst  *ROTFLMAO*

zicko >> Det er ikke dig, vi griner ad ... det er bare en gammel, intern ting, HORSmark og jeg har kørende  ;D
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:00 #23
zicko >> sidder du i firefox og udvikler ? Mht javascript udvikling er denne browser et must !!! Da den kan finde alle de fejl du måtte have i javascript...
Avatar billede olebole Juniormester
13. februar 2006 - 16:02 #24
De mange bugs FF selv har bliver ikke fanget, men generelt er debuggeren bedre i FF. Det bedste er at checke i flere browsere på skift  =)
Avatar billede horsmark Nybegynder
13. februar 2006 - 16:07 #25
..og i firefox sætte javascript.options.strict = true så får man også alle ikke erklærede variabler vist som warnings ;-) I adresselinien skriv da - "about:config" søg derefter efter javascript
Avatar billede zicko Nybegynder
13. februar 2006 - 18:42 #26
Hehe.. kan godt se ironien i at det er et spørgeskema om heste ;) Den ku' du li' :P 

- Har desværre ikke firefox installeret.. skal lige ha hentet det igen... Nå men jeg fik valideringsfunktionen til at virke efter hensigten, det er bare super!
Så mangler jeg kun den funktion til at checke efter at der kun er tal i de felter med antal år, og postnummer.. har luret lidt på det der lille script du lavede Horsmark, men hvordan får jeg den til at lade være med at kontrollere længden af det indtastede?
Avatar billede olebole Juniormester
13. februar 2006 - 19:57 #27
if (ELEMENT.value.match(/^[^0-9]+$/)) alert("Der står andet end tal");
Avatar billede zicko Nybegynder
13. februar 2006 - 23:22 #28
arh.. jamen hvordan får jeg den passet ind sammen med de andre? så det bliver i stil med: if ( !isNumber( document.getElementById....
Avatar billede olebole Juniormester
13. februar 2006 - 23:35 #29
Prøv:

function isNumber( n ) {
    return test(/^[0-9]+$/);
}

function validate() {
var returnString = "";
if ( !isNumber(document.getElementById('DIT_ID').value) ) returnString +="Der må kun stå tal i feltet\n"
//Q1
... osv - osv ...
Avatar billede horsmark Nybegynder
14. februar 2006 - 07:49 #30
check evt denne ud :
http://i.tdc.dk/global/js/Metaform/validation.js

vær opmærksom på at getEle er en function der laver en document.getElementById
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