Avatar billede jaw Nybegynder
02. november 2005 - 14:25 Der er 5 kommentarer og
1 løsning

Validering af radiobuttons

God eftermiddag.

Nu må jeg endnu engang erkende, at javascript ikke er min force :)

Jeg har 4 rækker á 5 radiobuttons. Problemet er, at det ikke må være muligt at vælge den samme radiobutoon i flere rækker. Altså, hvis man vælger nr. 1 i øverste række har man kun nr. 2, 3, 4 og 5 i næste række osv.

I første omgang skal jeg finde ud af, hvilken radiobutton brugeren vælger. Hvis så, der vælges 2 ens, skal den af-checke den tidligere valgte.

Gav det overhovedet nogen mening, eller så spørg endelig, så vil jeg prøve at forklare på en anden måde.

Tak :)
Avatar billede roenving Novice
02. november 2005 - 14:53 #1
Hrm, jeg lavede en, men var det sidste eller forrige år ...

-- jeg kan i hvert fald ikke finde den ,-(
Avatar billede jaw Nybegynder
02. november 2005 - 14:56 #2
Øv øv da :|

Det er da ikke engang muligt at sætte en id=1 og så bruge den til noget, vel? Hvis jeg bare havde noget at arbejde med, udover de lidt halvtunge arrays jeg har fået rodet mig ud i tror jeg det ville hjælpe. Bare et lille hint måske?! :)
Avatar billede jaw Nybegynder
02. november 2005 - 16:31 #3
Nå, jeg har fået bikset noget sammen nu, som rent faktisk også virker. Om det er den nemmest og bedste løsning ved jeg ikke, men det virker da :)

function prioritate(which, h, n) {
    num = which.getElementsByTagName("input").length;
    count = new Array();
    j = 0;
    for(i = 0; i < num; i++) {
        if(which.elements[i].type == "radio") {
            count[j] = i;
            j++;
        }
    }
    values = new Array();
    j = 0;
    for(i = 0; i < count.length; i++) {
        if(which.elements[count[i]].checked == true) {
            values[j] = which.elements[count[i]].value;
            j++;
        }
    }
    j = 0;
    for(i = 0; i < values.length; i++) {
        if(values[i] == h) {
            j++;
        }
    }
    if(j > 1) {
        for(i = 0; i < count.length; i++) {
            if(which.elements[count[i]].value == h && which.elements[count[i]].name != "f" + n && which.elements[count[i]].checked == true) {
                which.elements[count[i]].checked = false;
                which.error.value = "Du kan ikke have 2 ens prioriteringer.";
            }
        }
    }
}
Avatar billede johan.o Nybegynder
03. november 2005 - 01:28 #4
Det lød som en 'sjov'...ja ja I know :)...opgave og jeg endte med dette :

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN' 'http://www.w3.org/TR/REC-html40/strict.dtd'>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<title>Test</title>
<script type='text/javascript'>

var oRows = new Array('a','b','c','d');
var oCol = 4;

function change(oObject)
{
for(i=0; i<oRows.length; i++) {
  if(oObject.id.substr(0,1)!=oRows[i])
  document.getElementById(oRows[i]+oObject.id.substr(1)).disabled=true;
  else {
  for(a=0; a<oCol; a++) {
    if(oObject.id!=oRows[i]+"_"+a && document.getElementById(oRows[i]+"_"+a).disabled===false) {
    for(e=0; e<oRows.length; e++) {
      document.getElementById(oRows[e]+"_"+a).disabled=false; } } } } }
}

function oReset()
{
for(i=0; i<oRows.length; i++) {
  for(a=0; a<oCol; a++) {
  document.getElementById(oRows[i]+"_"+a).disabled=false;
  document.getElementById(oRows[i]+"_"+a).checked=false; } }
}

</script>
</head>

<body style='background-color: gray;'>

<form id='oForm' method='post' action='oLink.php' onsubmit="return false;">

<table><tr>
<td><input type='radio' id='a_0' name='a' value='0' onclick='change(this);'>A0</td>
<td><input type='radio' id='a_1' name='a' value='0' onclick='change(this);'>A1</td>
<td><input type='radio' id='a_2' name='a' value='0' onclick='change(this);'>A2</td>
<td><input type='radio' id='a_3' name='a' value='0' onclick='change(this);'>A3</td>
</tr><tr>
<td><input type='radio' id='b_0' name='b' value='0' onclick='change(this);'>B0</td>
<td><input type='radio' id='b_1' name='b' value='0' onclick='change(this);'>B1</td>
<td><input type='radio' id='b_2' name='b' value='0' onclick='change(this);'>B2</td>
<td><input type='radio' id='b_3' name='b' value='0' onclick='change(this);'>B3</td>
</tr><tr>
<td><input type='radio' id='c_0' name='c' value='0' onclick='change(this);'>C0</td>
<td><input type='radio' id='c_1' name='c' value='0' onclick='change(this);'>C1</td>
<td><input type='radio' id='c_2' name='c' value='0' onclick='change(this);'>C2</td>
<td><input type='radio' id='c_3' name='c' value='0' onclick='change(this);'>C3</td>
</tr><tr>
<td><input type='radio' id='d_0' name='d' value='0' onclick='change(this);'>D0</td>
<td><input type='radio' id='d_1' name='d' value='0' onclick='change(this);'>D1</td>
<td><input type='radio' id='d_2' name='d' value='0' onclick='change(this);'>D2</td>
<td><input type='radio' id='d_3' name='d' value='0' onclick='change(this);'>D3</td>
</tr><tr>
<td colspan='4' style='text-align: center; cursor: pointer;' onclick='oReset();'>Reset !</td>
</tr></table>

</form>

</body>
</html>

Lad mig høre hvad du syntes.

Mvh. Johan
Avatar billede jaw Nybegynder
03. november 2005 - 14:14 #5
Hej Johan.

Det havde jeg skam nok også kunnet bruge :) Dog disabler din de muligheder der ikke er tilladte, og det er nok lige i overkanten til mit formål. Men det virker jo :)

Der er dog et par variabler som jeg ser det, som du manuelt sætter, hvilket gør det ret udynamisk. Og tror det var dén del, der var ret tricky for mig.

Men vil du ha' lidt points? Jeg lod faktisk spørgsmålet stå åbent længe, men lukkede det lige da jeg gik i seng, hvilket nok har været 20 mins før du kommenterede :) !
Avatar billede johan.o Nybegynder
03. november 2005 - 16:05 #6
Ingen problemer med points - bare du har noget du kan bruge :)

Mvh. Johan
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