Avatar billede causasui Nybegynder
22. februar 2003 - 15:43 Der er 15 kommentarer og
1 løsning

radiobutton tjek

Jeg har fundet dette script på eks.
Lige nu tjekkes der for om der er checked i kategori 1 og der er fint nok. Men vil gerne ha' at der tjekkes på samme måde for kategori 2.
Altså hvis kategori 1 er checked men ikke kategori 2, skal alert sige: Husk kategori 2.... og omvendt. Hvis begge er valgt -> så submit
Det skal være en løkke da der kan forekomme fra 0 til mange radiobuttons under hver kategori!!

<html>
<head>
<script language="JavaScript">
<!--
function validate(f){
  var isChecked = false
  for (i=0;i<f.length;i++){
  if (f[i].checked == true) isChecked = true
  }
  if(isChecked==false){
    alert('Husk at vælge i kategori 1')
    }
  return isChecked
}
// -->
</script>
<form name=bestil onSubmit="return validate(document.bestil.sp)" >
<!--kategori 1-->
<input type=radio name=sp1 value="Ja">
<input type=radio name=sp1 value="Nej">
<!--kategori 2-->
<input type=radio name=sp2 value="Ja">
<input type=radio name=sp2 value="Nej">

<input type="Submit">
</form>

</body>
</html>
Avatar billede causasui Nybegynder
22. februar 2003 - 15:48 #1
ups-> <form name=bestil onSubmit="return validate(document.bestil.sp1)">
Avatar billede swootech Nybegynder
22. februar 2003 - 16:06 #2
Tja, selvom det script nok ikke vil være min løsning, så kan du ihvertfald opnå det du vil ved lave onsubmitom til:
"return validate(document.bestil.sp1) + validate(document.bestil.sp2)"
Du har så selvfølgelig samme alert for begge kategorier, men det kan du jo løse på mange måde - evt. ved at lave denne test i javascriptet:
if (f == document.bestil.sp1) alert('Husk at vælge i kategori 1');
else alert('Husk at vælge i kategori 2');

enjoy!
Avatar billede causasui Nybegynder
22. februar 2003 - 16:26 #3
-> swootech
Kan ikke få det til at virke !!
Hvis du gider må du meget gerne vise hvordan du vil lave det, jeg ved ikke meget om javascript !
- causasui
Avatar billede causasui Nybegynder
22. februar 2003 - 18:11 #4
Okay har ny prøvet med noget helt andet, men jeg fatter hvis ikke så meget af det!!
Er der ikke nogen der gider at forklare, please...
function getRadioValue(knap,knap2)
{
    var isChecked1 = false
  for (var i=0; knap.length>i; i++){
      if (knap[i].checked == true) isChecked1 = true
    }
        if(isChecked1==false)
    {
    alert('Husk at vælge i kategori 1);
    return isChecked1
    }
    }
 
  var isChecked2 = false
  for (var i=0; knap2.length>i; i++){
      if (knap2[i].checked == true) isChecked = true
    }
      if(isChecked2==false)
    {
    alert('Husk at vælge i kategori 1);
    }
    return isChecked2
}




<form name=bestil onSubmit= "return getRadioValue(sp1,sp2)">

<!--kategori 1-->
<input type=radio name="sp1" value="4">
<input type=radio name="sp1" value="8">
<!--kategori 2-->
<input type=radio name="sp2" value="6">
<input type=radio name="sp2" value="7">

<input type="Submit">
</form>
Avatar billede causasui Nybegynder
22. februar 2003 - 18:13 #5
Ja så kommer det lige igen, rettede lige nogle småfejl:

function getRadioValue(knap,knap2)
{
    var isChecked1 = false
  for (var i=0; knap.length>i; i++){
      if (knap[i].checked == true) isChecked1 = true
    }
        if(isChecked1==false)
    {
    alert('Husk at vælge i kategori 1);
    return isChecked1
    }
    }
 
  var isChecked2 = false
  for (var i=0; knap2.length>i; i++){
      if (knap2[i].checked == true) isChecked2 = true
    }
      if(isChecked2==false)
    {
    alert('Husk at vælge i kategori 2);
    }
    return isChecked2
    }
}
Avatar billede causasui Nybegynder
22. februar 2003 - 18:33 #6
Selvom eksperten lige nu er tavs, ja så holder det håbet oppe !
Så jeg fortsætter med at snakke med mig selv!!
Nu virker det, er der så nogen der gider at kommenterer/kritik på det!!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<html>
<head>
<script language="JavaScript">

function validate(f,c){
  var isChecked1 = false
  for (i=0;i<f.length;i++){
  if (f[i].checked == true) isChecked1 = true
  }
  var isChecked2 = false
  for (i=0;i<c.length;i++){
  if (c[i].checked == true) isChecked2 = true
  }
  if(isChecked1==false)
  {
      alert('Husk at vælge i kategori 1');
  }
  if(isChecked2==false)
  {
      alert('Husk at vælge i kategori 2');
  }
    return isChecked

}
</script>
</head>
<body>

<form name=bestil onSubmit="return validate(document.bestil.sp1,document.bestil.sp2)">

<!--kategori 1-->
<input type=radio name="sp1" value="4">
<input type=radio name="sp1" value="8">
<!--kategori 2-->
<input type=radio name="sp2" value="6">
<input type=radio name="sp2" value="7">

<input type="Submit">
</form>
</body>
</html>
Avatar billede mortrr Praktikant
22. februar 2003 - 18:43 #7
Ja, men så skal du jo lave et nyt check for hver ny knap du tilføjer.

Hvad med:
<html>
<body>
<script>
function CheckRadios(iForm,kName)
{
  var arrRadVal = new Array();

  i=1;
  curElem=iForm.elements(kName+i);

  while (curElem) {
    arrRadVal[i]=0;

    if (curElem.length) {
      for (j=0;j<curElem.length;j++) {
        if (curElem[j].checked) {
      arrRadVal[i]++;
        }
      }
    } else {
        if (curElem.checked) {
      arrRadVal[i]++;
        }
    }

    i++;
    curElem=iForm.elements(kName+i);
  }

  for (i=1;i<arrRadVal.length;i++) {
    if (arrRadVal[i]==0) {
      alert("Husk at udfylde kategori "+i);
      curElem=iForm.elements(kName+i);
      return false;
    }
  }
  return true;
}
</script>
<form onsubmit="return CheckRadios(this,'r')">
<input type="radio" name="r1" value="1">
<input type="radio" name="r1" value="2">
<br><input type="radio" name="r2" value="3">
<input type="radio" name="r2" value="4">
<br><input type="radio" name="r3" value="5">
<input type="radio" name="r3" value="6">
<br><input type="radio" name="r4" value="7">
<br><input type="submit" value="Send">
</form>
</body>
</html>

- Morten
Avatar billede causasui Nybegynder
22. februar 2003 - 18:47 #8
->Morten
Ja det er jo rigtig nok, men jeg har to "blokke" jeg skal validerer på.
I den ene hedder alle radiobuttons "sp1" og i den anden "sp2" derfor skulle funktionen gerne holde i denne sammenhæng, oder wat??
Avatar billede swootech Nybegynder
22. februar 2003 - 18:49 #9
Næsten - der er et problem med at dy returner inden den kommer til anden del. Prøv det her:

Dit script:
function getRadioValue(knap,knap2)
{
  var isChecked = false;
  for (var i=0; knap.length>i; i++) if (knap[i].checked == true) isChecked = true;
  if (!isChecked) alert('Husk at vælge i kategori 1');
  else
  {
    isChecked = false;
    for (var i=0; knap2.length>i; i++) if (knap2[i].checked == true) isChecked = true;
    if (!isChecked) alert('Husk at vælge i kategori 2');
  }
  return isChecked;
}


Din form:
<form name=bestil onSubmit="return getRadioValue(document.bestil.sp1, document.bestil.sp2);">

Håber det hjælper dig lidt igang.
Avatar billede causasui Nybegynder
22. februar 2003 - 18:55 #10
->swootech
Det er smukt, nu virker det og ja forstår godt hvad du mener!!
Så fik jeg sgu da lidt hul på javascript !!
->point??
Avatar billede mortrr Praktikant
22. februar 2003 - 18:55 #11
-> causasui
Hvis du lige afprøvede scriptet ville du se at den tager alle buttons der hedder r1 r2 r3 r4, og kontroller om en med det angivne navn er checked.

Hvis du vil have den til at checke din formular, kaldes det med fx
<form onsubmit="return CheckRadios(this,'sp')">

Så kontrollerer den for s1, s2, s3, s4 osv om en radiobutton med det aktuelle navn er checked.

- Morten
Avatar billede causasui Nybegynder
22. februar 2003 - 18:58 #12
-> mortrr
Bliver nød til at smutte nu, tjekker det senere, det ser spændende ud !!
Avatar billede causasui Nybegynder
22. februar 2003 - 18:59 #13
->mortrr og swootech smid et svar -> point
Avatar billede swootech Nybegynder
22. februar 2003 - 19:02 #14
Ah, man samler point...kanon :)
Avatar billede mortrr Praktikant
22. februar 2003 - 19:03 #15
Glemte lige Netscape.

Nedenstående virker også i Netscape.

<html>
<body>
<script>
function CheckRadios(iForm,kName)
{
  var arrRadVal = new Array();

  i=1;
  curElem=iForm.elements[kName+i];

  while (curElem) {
    arrRadVal[i]=0;

    if (curElem.length) {
      for (j=0;j<curElem.length;j++) {
        if (curElem[j].checked) {
      arrRadVal[i]++;
        }
      }
    } else {
        if (curElem.checked) {
      arrRadVal[i]++;
        }
    }

    i++;
    curElem=iForm.elements[kName+i];
  }

  for (i=1;i<arrRadVal.length;i++) {
    if (arrRadVal[i]==0) {
      alert("Husk at udfylde kategori "+i);
      return false;
    }
  }
  return true;
}
</script>
<form onsubmit="return CheckRadios(this,'r')">
<input type="radio" name="r1" value="1">
<input type="radio" name="r1" value="2">
<br><input type="radio" name="r2" value="3">
<input type="radio" name="r2" value="4">
<br><input type="radio" name="r3" value="5">
<input type="radio" name="r3" value="6">
<br><input type="radio" name="r4" value="7">
<br><input type="submit" value="Send">
</form>
</body>
</html>

Giv point til swootech.
Jeg kom med udvidelse og ikke svar.

- Morten
Avatar billede causasui Nybegynder
22. februar 2003 - 19:03 #16
ok jeg forstår!!
Tak for hjælpen!!!
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