Avatar billede hiks Nybegynder
02. juni 2004 - 23:13 Der er 11 kommentarer og
1 løsning

Validering af flere radiobuttons

Hej

Min hjerne er gået i sort...

Skal bruge hjælp til at validere om en/flere radiobuttons er checked. Vil bruge nedenstående kode men kan ikke få den til at virke... f er formen!

<script type="text/javascript">
function TjekRadio(f){
  e = f.elements;
  for(i=0;e.length>i;i++){
    if(e[i].name.checked('q')==0{
      alert('Ikke alle er tjekket!');
      e[i].focus();
      return false;
    }
  }
  return true;
}
</script>

/hiks
Avatar billede mat Nybegynder
02. juni 2004 - 23:15 #1
din "if" betingelse er ikke lukket...
Avatar billede mat Nybegynder
02. juni 2004 - 23:17 #2
din for løkke er vist osse uendelig hvis der er en længde på mere end en i e?
Avatar billede hiks Nybegynder
02. juni 2004 - 23:18 #3
kan jeg lige få et forslag til rettelse? kan slet ikke lige se det!

/hiks
Avatar billede mat Nybegynder
02. juni 2004 - 23:27 #4
jeg har ikke meget styr på javascript, jeg tror osse jeg tog fejl med for løkken - så bare forkert, men måske:

function TjekRadio(f){
  e = f.elements;
  for(i=0;e.length>i;i++){
    if(e[i].name.checked == 0){ // jeg ved ikke hvad ('q') er, men evaluerer "checked" ikke til enten true eller false anyways?
      alert('Ikke alle er tjekket!');
      e[i].focus();
      return false;
    }
  }
  return true;
}
Avatar billede grunken Nybegynder
02. juni 2004 - 23:34 #5
Hvad er idéen i at alle SKAL være checked når nu du bruger radios

og desuden må der siges at være en del fejl i den checker :o)
Avatar billede hiks Nybegynder
02. juni 2004 - 23:34 #6
kan desværre ikke få det til at virke lige pt.

kigger lige på dit i morgen!

men tak for det pt.

/hiks
Avatar billede grunken Nybegynder
02. juni 2004 - 23:36 #7
smid lige formen inden du hopper i køjen
Avatar billede knudx Nybegynder
02. juni 2004 - 23:45 #8
1.    Så vidt som jeg ved er ideen med radiobuttons at kun én i en gruppe kan være 'checked' - lissom på en radio hvor knappen popper ud når man trykker en anden ind. Man kan heller ikke 'unchecke' en radiobutton på anden måde end ved at trykke én af de andre ind. Den anden type er chekboxe, dem kan man slå til eller fra være uafhængigt af hinanden.

2.    Du kan heller ikke loope igennem f.elements og se efter om alle er 'checked', for formen kan også indeholde elementer som ikke kan være 'checked', f.eks. knapper (der er vel en submitknap i det mindste?) Du må finde en anden måde at få dine checkboxe grupperet på - for eksempel ved at kalde dem "chk-0", "chk-1" osv, og så skrive

function checkRadio (f) {
    for (i=0;i<antal_af_checkboxe;i++) {
        if (!f['chk-'+i]) {
            alert ('---');
            return false;
        }
    }
    return true;
}
Avatar billede grunken Nybegynder
02. juni 2004 - 23:51 #9
hvis vi antager f er formen

function TjekRadio(f){
  e = f.elements;
  for(i=0;e.length>i;i++){
    if(e[i].type=="radio" && !e[i].checked){
    alert('Ikke alle er tjekket!');
    e[i].focus();
    return false;
    }
  }
  return true;
}

Men brug nu checkboxe i stedet :o)
Avatar billede roenving Novice
03. juni 2004 - 14:23 #10
Og hvis du skal teste om der er afkrydset bare en radio af en gruppe:

function TjekRadio(f){
  e = f.elements.radioName,chckd=false;
  for(i=0;e.length>i;i++)chckd = chckd||e[i].checked
  if(!chckd){
    alert('Du skal vælge !-)');
    e[0].focus();
    return false;
  }
  return true;
}
Avatar billede hiks Nybegynder
04. juni 2004 - 16:26 #11
hej

jeg var nødt til at klare det lidt omstændigt, da jeg havde mange grupper af med mange radiobuttons... derfor: (virker dog kun med nyere browsere)

var elNum=new Array(),elName=new Array();

function valMatrix(frm){
    init(frm);
    return check(frm);
    //return true;
}

function check(frm){
  var valid=true,groupValid,str="Valid!\n\nValgte:\n";
  for(i=0;i<elNum.length;i++){
    groupValid=false;
    for(j=0;j<elNum[i];j++){
        if(frm.elements[elName[i]][j].checked){
            groupValid=true;
            break;
        }
    }
    if(!groupValid){
        valid=false;
        break;
    }
  }
  if(!valid){
    alert('Alle spørgsmål skal besvares!');
    return false;
  }
  return true;
}

function init(frm){
  var found,curName;
  for(i=1;i<frm.length-1;i++){
    found=false,curName=frm.elements[i].name;
    for(j=0;j<elName.length;j++){
        if(curName==elName[j]){
            found=true;
            break;
        }
    }
    if(!found){
        elName[elName.length]=curName;
    }
  }
  for(i=0;i<elName.length;i++){
    elNum[i]=frm.elements[elName[i]].length;
    if(elNum[i]==undefined){
        elNum[i]=0;
    }
  }
}

grunken, hvis du vil have nogle p. så svar lige en omgang for at have deltaget! tak.

/hiks
Avatar billede grunken Nybegynder
06. juni 2004 - 13:58 #12
svar :o)
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