Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:04 Der er 22 kommentarer og
1 løsning

Radiobutton validering

Jeg har et tilfældigt antal radiobuttons. Med navne starende fra spm0 til uendelig. Eks. spm20.

Jeg vil gerne checke at alle radiobuttons er valgt. Hvordan klares det?
Avatar billede m-koldsgaard Nybegynder
21. juni 2002 - 22:25 #1
Lidt JavaScript at lege med:
<script language="JavaScript">
<!--
function checkRadiogruppe( gruppenavn ) {
    var rArray = document.Form.elements[gruppenavn];
    for (var i=0; i<rArray.length; i++ ) {
        if ( rArray[i].checked ) {
            return true;
        }
    }
    rArray[0].focus();
    return false;  // ingen knap valgt
}; //end

function validate(Form)
{
  if (checkRadiogruppe('spm0')) {
  } else {
    alert('Er ikke valgt.');
    return false;
  }
}
//-->
</script>
Avatar billede delwin Nybegynder
21. juni 2002 - 22:29 #2
hvis vi siger din form ser sådan her ud..

<form name="test" onSubmit="return chkCheck();">
<input type="radio" value="1" name="spm0">
<input type="radio" value="1" name="spm1">
<input type="radio" value="1" name="spm2">
<input type="radio" value="1" name="spm3">
<input type="radio" value="1" name="spm4">
<input type="radio" value="1" name="spm5">
<input type="radio" value="1" name="spm6">
<input type="radio" value="1" name="spm7">
<input type="submit">
</form>

kunne du køre bruge dette javascript

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  <!--
var length,i;
var formnavn    = "test";
  function chkCheck() {
    length    = document.forms(formnavn).elements.length;
    for(i=0;i<length;i++) {
        if(document.forms(formnavn).elements[i].name.substring(0,3)=="spm"&&document.forms(formnavn).elements[i].checked==false) {
            alert("fejl på spm # "+i);
            return false;
        }
    }
    return true;
}
  //-->
  </SCRIPT>
Avatar billede delwin Nybegynder
21. juni 2002 - 22:31 #3
Du kan så sætte lige så mange radiobuttons ind som du har lyst til.. så længe at deres navne kører fortløbende.. fx. spm0, spm1, spm2, spm3 osv osv..

der kommer fejl hvis du derimod kalder dem spm0, spm1, spm3,spm4 osv osv og springer spm2 over..
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:33 #4
Hvad svarer gruppenavn til?
Avatar billede delwin Nybegynder
21. juni 2002 - 22:35 #5
næ.. den kan sgu alligevel godt håndtere at numrene ikke er fortløbende.. er vist lidt træt.. men her er alligevel en anden version..

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
var length,i;
var formnavn    = "test";
  function chkCheck() {
    length    = document.forms(formnavn).elements.length;
    for(i=0;i<length;i++) {
        if(document.forms(formnavn).elements[i].name.substring(0,3)=="spm"&&document.forms(formnavn).elements[i].checked==false) {
            alert("fejl på spm # "+document.forms(formnavn).elements[i].name);
            return false;
        }                   
    }
    return true;
}
//-->
</SCRIPT>
Avatar billede jakoba Nybegynder
21. juni 2002 - 22:38 #6
<script type='text/javascript'> <!-- // test for valg i alle radio-knap grupper.

function checkRadios( formObj ) {
    var tested = new Array();
    var failed = "";
    var fe = formObj.elements;  // array med alle form felter ef enhver slags.
    for (var i=0; i<fe.length; i++ ) {
        if ( fe[i].type=='radio' && ! tested[ fe[i].name ] ) {
            tested[ fe[i].name ] = -1;  // formod ikke valgt
            var fr = formObj[fe[i].name];
            for (var j=0; j<fr.length; j++ ) {
                if ( fr[j].checked ) {
                    tested[ fe[i].name ] = +1; // 1 er valgt
                }
            }
            if ( tested[ fe[i].name ] == -1 ) { // ingen var valgt;
                failed += ","+fe[i].name;
            }
        }
    }
    if ( failed.length > 0 ) {
        alert( "der skal vælges noget i grupperne:\n" +failed.substr(1) );
        return false
    } else {
        return true;
    }
}; //end checkRadios( Form object ) -> boolean

// --> </script>

funktionen kan fx kaldes fra omsubmit med:

<form ... onsubmit="return checkRadios( this )">

mvh JakobA
Avatar billede jakoba Nybegynder
21. juni 2002 - 22:39 #7
for langsom :(
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:48 #8
jacoba>>Det ved jeg ikke om du var. Jeg kan ikke få delwins til at virke. Det afviser selvom der er udfyldt korrekt. Dit script fejler i "for (var i=0; i<fe.length; i++ ) {"
Avatar billede delwin Nybegynder
21. juni 2002 - 22:49 #9
hvad skulle der nu være i vejen med mit script.. har du kaldt formen et navn og fortalt scriptet hvad formen hedder..?
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:50 #10
Nej undskyld i linien: "var fe = formObj.elements;"
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:51 #11
delwin>>Yes

Men en radiobutton kan jo godt bestå af mere end en svarmulighed.
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:51 #12
jacoba>>Fejl:'elements' er null eller ikke et objekt.
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 22:55 #13
Min fejl. Men nu er der fejl i linien: "for (var i=0; i<fe.length; i++ ) {"

Fejl: 'length´' er null eller ikke et objekt
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 23:00 #14
jacoba ???
Avatar billede m-koldsgaard Nybegynder
21. juni 2002 - 23:02 #15
Gruppenavn er til navnet på den gruppe radioknapperne er i. Hvis du fx har en gruppe kaldet spm01, har du nok etellerandet du kan vælge mellem evt. Ja/Nej
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 23:03 #16
Ja men det virker vel kun på en radiobut gruppe så? Eller?

Kan den teste spm0, spm1, spm2 spm3 osv automatisk uden at jeg skal definere en løkke med start og slut?
Avatar billede m-koldsgaard Nybegynder
21. juni 2002 - 23:09 #17
øhh... Det må du heller spørge JakobA om det er nemlig et script han har lavet som jeg bare har tilpasset og minimeret.

Prøv evt. at komme med html-koden til din form. Eller et ex
Avatar billede friiser Nybegynder
21. juni 2002 - 23:15 #18
lytter med....

~friiser~ http://www.radio-online.dk
Avatar billede dkkarpen Nybegynder
21. juni 2002 - 23:31 #19
Så må jeg vist hellere vente på jacoba
Avatar billede jakoba Nybegynder
23. juni 2002 - 01:24 #20
er du sikker på du kalder funktionen fra din <form kommando? som her:
<form ... onsubmit="return checkRadios( this )">
Avatar billede jakoba Nybegynder
23. juni 2002 - 01:26 #21
Hvis ikke skal kaldet være:
        checkRadios( document.formensNavn );
Avatar billede dkkarpen Nybegynder
23. juni 2002 - 18:52 #22
Yes det gør jeg.
Avatar billede dkkarpen Nybegynder
23. juni 2002 - 18:56 #23
Ah - det virkede ned document.formnavn. Mærkeligt nok...
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