webForumDet fria alternativet

Script som håller radiobuttons i schack

3 svar · 215 visningar · startad av Patrik81

Patrik81Medlem sedan okt. 2001538 inlägg
#1

Ok, lite knäpp rubrik, men jag är så mossig i skallen efter jobbet idag.

Erkänner med en gång att jag inte sökt här på webforum efter en lösning, eftersom jag inte ens vet själv hur jag skall sammanfatta kort vad det är jag vill göra.

Jag har iaf. den här htmlkoden

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Order by - test</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="MSSmartTagsPreventParsing" content="TRUE" />
<meta http-equiv="imagetoolbar" content="no" />
</head>
<body>

<p class="header"></p>
<div class="world">
<form action="" method="post">

<p class="formField">Användarnamn 
<input type="radio"  onclick="checkSwitch('uid','1');" name="uid" value="1" />1 
<input type="radio"  onclick="checkSwitch('uid','2');" name="uid" value="2" />2 
<input type="radio"  onclick="checkSwitch('uid','3');" name="uid" value="3" />3 
<input type="radio"  onclick="checkSwitch('uid','4');" name="uid" value="4" />4 
<select name="uidWay"><option value="desc" selected="selected">Fallande</option><option value="asc">Stigande</option></select></p>

<p class="formField">Match 
<input type="radio"  onclick="checkSwitch('match','1');" name="match" value="1" />1 
<input type="radio"  onclick="checkSwitch('match','2');" name="match" value="2" />2 
<input type="radio"  onclick="checkSwitch('match','3');" name="match" value="3" />3 
<input type="radio"  onclick="checkSwitch('match','4');" name="match" value="4" />4 
<select name="matchWay"><option value="desc" selected="selected">Fallande</option><option value="asc">Stigande</option></select></p>

<p class="formField">Poäng 
<input type="radio"  onclick="checkSwitch('score','1');" name="score" value="1" />1 
<input type="radio"  onclick="checkSwitch('score','2');" name="score" value="2" />2 
<input type="radio"  onclick="checkSwitch('score','3');" name="score" value="3" />3 
<input type="radio"  onclick="checkSwitch('score','4');" name="score" value="4" />4 
<select name="scoreWay"><option value="desc" selected="selected">Fallande</option><option value="asc">Stigande</option></select></p>

<p class="formField">Träffsäkerhet 
<input type="radio"  onclick="checkSwitch('accuracy','1');" name="accuracy" value="1" />1 
<input type="radio"  onclick="checkSwitch('accuracy','2');" name="accuracy" value="2" />2 
<input type="radio"  onclick="checkSwitch('accuracy','3');" name="accuracy" value="3" />3 
<input type="radio"  onclick="checkSwitch('accuracy','4');" name="accuracy" value="4" />4 
<select name="accuracyWay"><option value="desc" selected="selected">Fallande</option><option value="asc">Stigande</option></select></p>

<input type="submit" value="Sortera" />
</form>
</div>

</body>
</html>

Jag behöver alltså ett script som håller koll på att bara en radioknapp med värdet 1 är markerad. Om en annan radioknapp med värdet 1 väljs så skall alla andra eventuella förekomster av markerade radioknappar med värdet 1 avmarkeras, så att bara den sist klickade knappen är markerad, och likaså med alla knappar med värdet 2, 3, 4 och så vidare, just nu har jag bara dessa fyra alternativ, kan bli flera senare.

Har jag på något sätt varit oklar så fråga, så skall jag efter bästa förmåga försöka uttrycka mig mindre luddigt.

MVH Patrik

dectgapMedlem sedan sep. 20021 655 inlägg
#2

Så här:

<script type="text/javascript">
function checkSwitch(radioGroupName, selectedValue){
    var j, radioElm;
    var radioGroups = ["uid", "match", "score", "accuracy"];

    for(var i=0; i<radioGroups.length; i++){
        radioElm = document.forms[0].elements[radioGroups[i]];
        for(j=0; j<radioElm.length; j++){
            if((radioElm[j].value == selectedValue) && (radioElm[j].checked) && (radioElm[j].name != radioGroupName))
                radioElm[j].checked = false;
        }
    }
}
</script>
RGBMedlem sedan dec. 1999419 inlägg
#3

Eller...

function checkSwitch(a)
{
var i = 0;
var j = a.form.elements;
while(j.length > i)
{
	if((j[i].name != a.name) && (j[i].value == a.value)){j[i].checked = false;}
	i++;
}
}

...
...
...

<input type="radio"  onclick="checkSwitch(this);" name="uid" value="1" />
Patrik81Medlem sedan okt. 2001538 inlägg
#4

Tack både dectgap och RGB för det visade intresset. Anledningen till att jag markerade RBG´s svar som slutgiltigt är att jag i framtiden inte vet om det kommer till fler rader, och jag med största säkerhet skulle missa att lägga till den i radioGroups arrayen, medan jag i RGB´s script slipper tänka på det. Men ett stort tack till er båda för att ni tog er tiden, det uppskattas skall ni veta.
Tack :bire

MVH Patrik

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)