Avatar billede tigerdyr Nybegynder
09. februar 2000 - 11:04 Der er 10 kommentarer og
1 løsning

JavaScript, tjekke om en RADIO knap er checked eller ej

Okay her er så et lille problem (jeg har prøvet de løsninger der står
i tidligere spørgsmål på eksperten, men ingen af dem virker efter hensigten).
Jeg har en helvedes masse radio-buttons, som jeg vil tjekke om er markeret og derefter gemme
værdien af den der er markeret i en variabel, men jeg kan sgu ikke få det til at virke...
Nogen der har fået det til at virke ?

Jeg har lavet en "mini" udgave min HTML source og de forskellige scripts jeg har prøvet, så
i kan se hvad jeg har prøvet tidligere... Intet af det virker
Jeg får konstant denne "skønne" fejl:
Linje:    16
Tegn:    5
Fejl:    'document.Formular.Group01[...].checked' er ikke et objekt
Kode:    0

Nogen der kan gennemskue det her ??
(og selvfølgelig står der ikke Script1: osv. i functionen)
Hurtigt svar søges!!!!

mvh.
Tigerdyr

HTML source:

<HTML>
<HEAD>
<TITLE>
Test
</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JAVASCRIPT">
function Check()
{
  Her står de forskellige scripts....
};
</SCRIPT>
<FORM NAME="Formular" OnSubmit="Check()">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Satisfied">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Neutral">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Dissatisfied">
<BR>
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Satisfied">
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Neutral">
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Dissatisfied">
<BR>
<INPUT TYPE="SUBMIT" VALUE="Submit">
<INPUT TYPE="RESET" VALUE="Reset">
</FORM>
</BODY>
</HTML>


Script source:
Script1:
  var Group1, Group2, i;
  for (i=0;i<3;i++)
  Group1 = "Nope"
  Group2 = "Nope"
  {
    if (document.Formular.Group01[i].value.checked)
    {
      Group1 = document.Formular.Group01[i].value
    }
    if (document.Formular.Group02[i].checked = true)
    {
      Group2 = document.Formular.Group02[i].value
    }
  }
  writeln("Group01: " + Group1 + "<BR>");
  writeln("Group02: " + Group2 + "<BR>");

Script2:
  var Group1, Group2, i;
  for (i=0;i<3;i++)
  Group1 = "Nope"
  Group2 = "Nope"
  {
    if (document.Formular.Group01[i].checked = true)
    {
      Group1 = document.Formular.Group01[i].value
    }
    if (document.Formular.Group02[i].checked = true)
    {
      Group2 = document.Formular.Group02[i].value
    }
  }
  writeln("Group01: " + Group1 + "<BR>");
  writeln("Group02: " + Group2 + "<BR>");

Script3:
  var Group1, Group2, i;
  for (i=0;i<3;i++)
  Group1 = "Nope"
  Group2 = "Nope"
  {
    if (document.Formular.Group01[i].checked = "true")
    {
      Group1 = document.Formular.Group01[i].value
    }
    if (document.Formular.Group02[i].checked = "true")
    {
      Group2 = document.Formular.Group02[i].value
    }
  }
  writeln("Group01: " + Group1 + "<BR>");
  writeln("Group02: " + Group2 + "<BR>");

Script4:
  var Group1, Group2, i;
  for (i=0;i<3;i++)
  Group1 = "Nope"
  Group2 = "Nope"
  {
    if (document.Formular.Group01[i].checked)
    {
      Group1 = document.Formular.Group01[i].value
    }
    if (document.Formular.Group02[i].checked)
    {
      Group2 = document.Formular.Group02[i].value
    }
  }
  writeln("Group01: " + Group1 + "<BR>");
  writeln("Group02: " + Group2 + "<BR>");
Avatar billede pingo Nybegynder
09. februar 2000 - 11:13 #1
Du kan ikke cheke om radiobuttons er checked.

Du kan cheke om en checkbox er checked.

Dermed - radio:

document.formnavn.gruppenavn.value

Og checkbokse:

document.formnavn.boksnavn.checked
Avatar billede moses Praktikant
09. februar 2000 - 11:46 #2
SÅ kommer det svære:

Hvad skal man så??

Giver man alle radiobuttons i en gruppe værdier og kan man så skrive:

document.formnavn.gruppenavn.value

og får værdien på den radiobutton, der var trykket ned??


Avatar billede pingo Nybegynder
09. februar 2000 - 11:48 #3
Jah.

Præcist - de har hver en value.
Avatar billede tigerdyr Nybegynder
09. februar 2000 - 12:54 #4
Min trofaste håndbog i JS (JavaScript fra TF), siger, under Radioknapper (s.153), at:
checked er den aktuelle status og når man kan markere en Radioknap med document.Formularnavn.Radioknappensnavn[index].checked = true, må man da også kunne tjekke om hvilken knap der er markeret, ikke ???

Jeg skal bruge det og som jeg prøvede at forklare, skal jeg kun tjekke for at hente værdien af den Radioknap der er markeret (derfor vil jeg først tjekke om der er markeret en)...
Endvidere som du også kan se af min HTML stump, så har alle mine Radioknapper også hver sin værdi, men hvis jeg prøver at hente den i stedet for at tjekke deres status, får jeg kun den første og så en fejl....
Avatar billede moses Praktikant
09. februar 2000 - 12:58 #5
Du checker jo for hver radiobutton. Det skal du ikke.
Du skal lave ét check for hver gruppe !!

Det returnerede tal er value på den radiobutton, der var valgt i den gruppe.
Avatar billede tigerdyr Nybegynder
09. februar 2000 - 18:16 #6
Dvs. hvordan gør jeg helt præcist ??
Index = document.FORMULARNAVN.KNAPNAVN.??
Og så har jeg værdiens index ?? og kan gå til:
MinVariabel = document.Formular.GruppeXYZ[index].value

Er det sådan ??
Avatar billede pingo Nybegynder
10. februar 2000 - 08:58 #7
Nej - du får den value der står i VALUE="" med document.FORMULARNAVN.KNAPNAVN.VALUE
Avatar billede tigerdyr Nybegynder
10. februar 2000 - 10:24 #8
Skal lige have tjekket om det virker efter hensigten... svarer tilbage engang i aften! :o)
Avatar billede tigerdyr Nybegynder
10. februar 2000 - 10:56 #9
Med følgende script får jeg kun:
Gruppe1: undefined Gruppe2: undefined

Hvad gør jeg forkert ??
Kan du ikke give mig hele den stump JS, der henter værdien for den VALGTE knap
og udskriver den ??

mvh.
Tigerdyr

<HTML>
<HEAD>
<TITLE>
Test
</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JAVASCRIPT">
function Check()
{
  var gruppe1, gruppe2;
  gruppe1 = document.Formular.Group01.VALUE;
  gruppe2 = document.Formular.Group02.VALUE;
  document.writeln("Gruppe1: " + gruppe1);
  document.writeln("Gruppe2: " + gruppe2);
};
</SCRIPT>
<FORM NAME="Formular" OnSubmit="Check()">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Satisfied">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Neutral">
<INPUT TYPE="RADIO" NAME="Group01" VALUE="Dissatisfied">
<BR>
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Satisfied">
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Neutral">
<INPUT TYPE="RADIO" NAME="Group02" VALUE="Dissatisfied">
<BR>
<INPUT TYPE="SUBMIT" VALUE="Submit">
<INPUT TYPE="RESET" VALUE="Reset">
</FORM>
</BODY>
</HTML>
Avatar billede olebole Juniormester
11. februar 2000 - 06:31 #10
Sæt en variabel i din head:

var check = 0;

På hver radiobutton laver du en onclick, der sætter 'check' til en talværdi i forhold til knappen:

<input type=radio name=Group01 value=Satisfied onclick='check=1;'>
<input type=radio name=Group01 value=Neutral onclick='check=2;'>

Hvis 'check' - når du på et tidspunkt spørger til den - er forskellig fra '0', er der valgt en radio. Du kan også få at vide, hvilken.
/VH
Ole Clausen
Avatar billede tigerdyr Nybegynder
12. februar 2000 - 20:24 #11
Skummelt, fandt en anden løsning... brugte et Array og en enkelt check variabel...(på den måde kan jeg tjekke om ALLE er besvaret, samt at jeg har fået værdien, men det tjekker stadig ikke "direkte" på om knappen er markeret)
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