Avatar billede causasui Nybegynder
23. februar 2003 - 21:50 Der er 7 kommentarer og
1 løsning

validering af radio og forms

Jeg har delvist selv lavet dette script men kan ikke komme videre...
Den skal tjekke nogle tekstfelter dernæst to "blokke" af radio buttons, hvori der skal vælges èn.
Kan nogle fortælle hvad der er forkert, radio tjekket skal være en løkke, da jeg har nul til mange radiobuttons....?
Avatar billede causasui Nybegynder
23. februar 2003 - 21:50 #1
ups her er koden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">


function checkform()
{
    if(document.udfyld.titel.value == "")
  {
  alert('Husk at udfylde titel');
  }
  else if(document.udfyld.tekst.value == "")
  {
  alert('Husk at udfylde tekst');
  }
  else if(document.udfyld.titel_e.value == "")
  {
  alert('Husk at udfylde engelsk titel');
  }
  else if(document.udfyld.tekst_e.value == "")
  {
  alert('Husk at udfylde engelsk tekst');
  }
  else if
  {
  var valid = false;
  var knap = document.udfyld.sp1.value;
  for (var i=0; knap.length>i; i++) if (knap[i].checked == true) valid = true;
  if (!valid) alert('Husk at vælge kategori 1');
  }
  else if
  {
  var valid = false;
  var knap = document.udfyld.sp2.value;
  for (var i=0; knap2.length>i; i++) if (knap2[i].checked == true) valid = true;
  if (!valid) alert('Husk at vælge kategori 2');
  {
  else
  {
  var valid = 1;
  return valid;
  }
}

 
</script>
<body>
<form name="udfyld" onsubmit="return checkform();">

<input type=text name="titel"><br>
<input type=text name="tekst"><br>
<input type=text name="titel_e"><br>
<input type=text name="tekst_e"><br>

<!--kategori 1-->
<input type=radio name="sp1">
<input type=radio name="sp1">
<!--kategori 2-->
<input type=radio name="sp2">
<input type=radio name="sp2">

<input type="Submit">


</body>
</html>
Avatar billede mm12010 Nybegynder
23. februar 2003 - 21:51 #2
vi har ikke rigtig noget at se på...  :o)
Avatar billede causasui Nybegynder
24. februar 2003 - 00:43 #3
øv øv ingen gider at svare !!
Jeg fandt selv ud af lidt, men fatter ikke helt hvorfor det nu virker er ret ny i det her.
Men jeg formoder det skyldes, ikke mindst lidt småfejl i ovenstående kode, men at jeg ikke for hentet/sendt mine radiobutts værdier rigtigt, med nedenstående kode virker det. Er det fordi jeg SKAL sende mine radio værdier(array) på denne måde??? det kunne være lækkert hvis nogen gad at kommenterer/forklare det, så jeg ikke bare koder i blinde!!
Kode:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">

function checkform(knap,knap2)
{
    if(document.udfyld.titel.value == "")
  {
  alert('Husk at udfylde titel');
  return false;
  }
  if(document.udfyld.tekst.value == "")
  {
  alert('Husk at udfylde tekst');
  return false;
  }
  if(document.udfyld.titel_e.value == "")
  {
  alert('Husk at udfylde engelsk titel');
  return false;
  }
  if(document.udfyld.tekst_e.value == "")
  {
  alert('Husk at udfylde engelsk tekst');
  return false;
  }
 
  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 forsker');
  return false;
  }
  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 del-projekt');
      return false;
    }
  }
 
 
  return true;
 
}

 
</script>
<body>
<form name="udfyld" onsubmit="return checkform(sp1,sp2);">

<input type=text name="titel"><br>
<input type=text name="tekst"><br>
<input type=text name="titel_e"><br>
<input type=text name="tekst_e"><br>

<!--kategori 1-->
<input type=radio name="sp1" value"1">
<input type=radio name="sp1" value"2">
<!--kategori 2-->
<input type=radio name="sp2">
<input type=radio name="sp2">
<input type="Submit"></form>


</body>
</html>
Avatar billede olebole Juniormester
24. februar 2003 - 08:15 #4
<ole>

Prøv at se denne løsning. Her sender jeg en reference til formen med som argument, når jeg kalder funktionen. Derefter kan der refereres til formen med 'f' i hele funktionen.

<html>
<head>
<title>Untitled</title>
<script type="text/javascript">

function checkform( f )
{
    if(f.titel.value == "")
  {
  alert('Husk at udfylde titel');
  return false;
  }
  if(f.tekst.value == "")
  {
  alert('Husk at udfylde tekst');
  return false;
  }
  if(f.titel_e.value == "")
  {
  alert('Husk at udfylde engelsk titel');
  return false;
  }
  if(f.tekst_e.value == "")
  {
  alert('Husk at udfylde engelsk tekst');
  return false;
  }
 
  var knap = f.sp1;
  var knap2 = f.sp2;
 
  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 forsker');
    return false;
  }
 
  isChecked = false;
  for (var i=0; knap2.length>i; i++) if (knap2[i].checked == true) isChecked = true;
  if (!isChecked)
  {
    alert('Husk at vælge del-projekt');
    return false;
  }
 
  return true;
 
}

</script>
</head>
<body>
<form name="udfyld" onsubmit="return checkform(this);">

Husk i øvrigt at lukke din head-sektion, med </head>
/mvh
</bole>
Avatar billede olebole Juniormester
24. februar 2003 - 08:21 #5
At dit første forsøg ikke fungerede, er der flere grunde til ... bl.a. at du roder rundt med dine if/else-forbehold.
Nu er alle check separeret i enkelte if-forbehold ... mon ikke, det virker mere logisk?
/mvh
Avatar billede causasui Nybegynder
24. februar 2003 - 09:29 #6
->olebole
Lige et sidste forståelses spørgsmål..
Hvornår man skriver det ene frem for det andet i funktionskald:
Du skriver
1. onsubmit="return checkform(this);"> -> hvad menes der med "this", jeg har også set noget lignenede det her
2. onsubmit="return getRadioValue(document.bestil.linkkat);">

Kan man holde sig til en bestemt "måde" som er mest hensigtsmæssig ?
Avatar billede causasui Nybegynder
24. februar 2003 - 09:34 #7
->olebole
Tak for den gode løsning!!

- causasui
Avatar billede olebole Juniormester
24. februar 2003 - 12:02 #8
this i et funktionskald refererer til elementet selv ... i dette tilfælde formen.

Havde der ligget et tekst-felt med en onclick-handler, der kalder funktionen bla():
  <input type="text" onclick="bla(this.form, this, this.form.ibbermand);">
Så refererer det første argument til formen - det andet til feltet selv - og det tredie til et formelement i samme form, der hedder 'ibbermand'.

Tit er det hensigtsmæssigt at bruge den slags referencer, da det kan slanke koden i selve funktionen. Man slipper for en masse 'document.FORMNAVN.FELTNAVN'-halløj  ;o)
/mvh

PS: Selvtak ... og tak for points  :)
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