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.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
<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>
<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 !-)
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>
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å !-)
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 ;))
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?
kan man skrive noget i retningen af form.n + i +[1] hvor i er nummeret på gruppen, og [1] er nummeret i gruppen??
Jeg har vist ikke forstået hvad du vil ;)
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 ...
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.
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; } }
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.
11. august 2004 - 12:46
#14
roenving laver du et svar, så får du alle poitne
11. august 2004 - 12:48
#15
Oki '-)
11. august 2004 - 13:03
#16
-- og tak for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling