Avatar billede moejensen Nybegynder
27. juli 2004 - 14:56 Der er 15 kommentarer og
1 løsning

check bestemt radiobotton i radiobotton gruppe

Jeg har en række gruppe af af radiokanpper der bliver genereres dynamisk. Hver gruppe indeholder 3 radioknapper - alle tre knapper i samme gruppe har samme navn.

Jeg ved at der altid er 8 formfelter før rækken af grupper starter.

Mit problem er nu hvordan jeg gennemløber alle grupperne af radiokanpper, og markere knap to i hver gruppe.
Avatar billede erikjacobsen Ekspert
27. juli 2004 - 15:02 #1
<html>
<head>
<title> ... </title>
<meta name="Generator" content="Human intelligence">
</head>

<SCRIPT LANGUAGE="JavaScript">
<!--
  function marker(f) {
    g="";
    for (i=0;i<f.elements.length;i++) {
      if (f.elements[i].type=="radio") {
        if (g==f.elements[i].name) {
          f.elements[i].checked=true;
          g="";
        } else {
          g=f.elements[i].name;
        }
      }
     
    }
  }
//-->
</SCRIPT>

<body onload="marker(document.f)">


<form name="f">
<input type="radio" name="n1" value="1">
<input type="radio" name="n1" value="2">
<input type="radio" name="n1" value="3"><br>

<input type="radio" name="n2" value="1">
<input type="radio" name="n2" value="2">
<input type="radio" name="n2" value="3"><br>

<input type="radio" name="n3" value="1">
<input type="radio" name="n3" value="2">
<input type="radio" name="n3" value="3"><br>

</form>

</body>
</html>
Avatar billede roenving Novice
27. juli 2004 - 15:04 #2
<script type="text/javascript">
function checkSecond(){
  e = document.FORMNAVN.elements,prev = null,lastChecked;
  for(i=0;e.length>i;i++){
    if(e[i].type=="radio"){
      if(prev&&e[i].name==prev){
        e[i].checked = true;
        lastChecked = e[i].name;
        prev = null;
      }else{
        prev = e[i].name;
      }
    }
  }
}
</script>

-- som vil markere den anden i hver gruppe på 3, og hver anden i grupper i større antal !-)
Avatar billede erikjacobsen Ekspert
27. juli 2004 - 15:09 #3
2 sjæle, 1 tanke ...
Avatar billede erikjacobsen Ekspert
27. juli 2004 - 15:12 #4
Men skal vi ikke generalisere lidt:

<SCRIPT LANGUAGE="JavaScript">
<!--
  function marker(f,n) {
    count=1;gammel="";
    for (i=0;i<f.elements.length;i++) {
      if (f.elements[i].type=="radio") {
        if (gammel==f.elements[i].name) {
          count++;
        } else {
          gammel=f.elements[i].name;
          count=1;
        }
        if (count==n) f.elements[i].checked=true;
      }
     
    }
  }
//-->
</SCRIPT>

<body onload="marker(document.f,3)">


<form name="f">
<input type="radio" name="n1" value="1">
<input type="radio" name="n1" value="2">
<input type="radio" name="n1" value="3"><br>

<input type="radio" name="n2" value="1">
<input type="radio" name="n2" value="2">
<input type="radio" name="n2" value="3"><br>

<input type="radio" name="n3" value="1">
<input type="radio" name="n3" value="2">
<input type="radio" name="n3" value="3"><br>
Avatar billede roenving Novice
27. juli 2004 - 15:15 #5
Jepz, det er præcis samme metode, med den samme lille uheldighed ved flere end 3 i gruppen ...

-- men det klarer din anden, jeg havde forberedt den med lastChecked ...

-- men det ville kun klare det med ikke at komme til at checke mere end een ...

-- mens din nye checker præcis den, som man kalder på !-)
Avatar billede erikjacobsen Ekspert
27. juli 2004 - 15:20 #6
Jeg forstår ikke helt dine sidste 3 pinde - det er også ligemeget.
Men du mener jo ikke "hver anden i grupper i større antal"  ... ikke radioknapper ;))
Avatar billede moejensen Nybegynder
27. juli 2004 - 15:43 #7
Det er mogle gode forslag, men jeg har måske udtrykt mig lidt forkert. Hvis jeg har de 3x3 radiobuttons og gerne vil markere n2 med værdien 2 af, hvad skriver jeg så?
Hvis jeg skriver f.elements[i].checked=true; så markeres den button med værdi 3 automatisk! Kan jeg ikke definerer hvilken af de tre buttons i hver gruppe der skal tjekkes af?
Avatar billede moejensen Nybegynder
27. juli 2004 - 18:17 #8
kan man skrive noget i retningen af form.n + i +[1]

hvor i er nummeret på gruppen, og [1] er nummeret i gruppen??
Avatar billede erikjacobsen Ekspert
27. juli 2004 - 20:04 #9
Jeg har vist ikke forstået hvad du vil ;)
Avatar billede roenving Novice
28. juli 2004 - 01:37 #10
Både eriks og mit forslag markerer den anden i gruppen ?-)

Hvilket ret præcist er hvad du spurgte efter ...
Avatar billede moejensen Nybegynder
28. juli 2004 - 09:02 #11
Jeg fandt en løsning udfra det i har skrevet, og fandt frem til det jeg skulle bruge.

Løsningen blev således:

<html>
<head>
<title> ... </title>
<meta name="Generator" content="Human intelligence">
</head>

<SCRIPT LANGUAGE="JavaScript">
<!--
 
    function marking(f,radio_name,radio_value) {
        for(i=0;i<f.elements.length;i++) {
              if(f.elements[i].type=="radio" && f.elements[i].name==radio_name && f.elements[i].value==radio_value)
                  f.elements[i].checked=true;
          }
    }
   
    function test() {
        marking(document.f,'n1',1);
        marking(document.f,'n2',2);
        marking(document.f,'n3',3);
    }

//-->
</SCRIPT>

<body onload="test()">

<form name="f">
<input type="radio" name="n1" value="1">
<input type="radio" name="n1" value="2">
<input type="radio" name="n1" value="3"><br>

<input type="radio" name="n2" value="1">
<input type="radio" name="n2" value="2">
<input type="radio" name="n2" value="3"><br>

<input type="radio" name="n3" value="1">
<input type="radio" name="n3" value="2">
<input type="radio" name="n3" value="3"><br>

</form>

</body>
</html>

I må gerne begge lave et svar, da jeg nok har lært lidt af begge jeres eksempler.
Avatar billede erikjacobsen Ekspert
28. juli 2004 - 09:51 #12
Du kan principielt nøjes med:

    function marking(f,radio_name,radio_value) {
        var g=f.elements[radio_name];
        for(i=0;i<g.length;i++) {
              if( g[i].value==radio_value)
                  g[i].checked=true;
          }
    }
Avatar billede erikjacobsen Ekspert
28. juli 2004 - 09:52 #13
Eller endda en anelse hurtigere (formentlig):


    function marking(f,radio_name,radio_value) {
        var g=f.elements[radio_name];
        for(i=0;i<g.length;i++) {
              if( g[i].value==radio_value) {
                  g[i].checked=true;
                  break;
              }
          }
    }
 

PS: Ingen point til mig tak, jeg samler ikke på dem.
Avatar billede moejensen Nybegynder
11. august 2004 - 12:46 #14
roenving laver du et svar, så får du alle poitne
Avatar billede roenving Novice
11. august 2004 - 12:48 #15
Oki '-)
Avatar billede roenving Novice
11. august 2004 - 13:03 #16
-- og tak for point ;~}
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