Avatar billede snowball Novice
11. december 2001 - 11:05 Der er 15 kommentarer og
1 løsning

Er checkboxen(e) checked !?

Jeg har en side med 2 frames. I den ene frame er der en knap. I den anden frame er der en række checkboxe som jeg øsnker at få \"valideret\" når jeg trykker på knappen! Altså, når jeg trykker på knappen, så skal et script løbe alle checkbox\'ene igennem og finde ud af om der er en eller flere er der cheked. Er der det, så skal den returnere true, og ellers skal den bare returnere false. Jeg er lige glad med hvilke og hvor mange der evt. er checked ! Antallet af checkboxe varierer, så derfor skal det laves i en løkke !

Min frame med checkbox\'ene er bygget op på følgende måde:

<table width=\"420\" cellspacing=\"0\">
  <tr bgcolor=\"#C0C0C0\">
    <td width=\"150\" height=\"25\"><b>Række1</b></td>
    <td width=\"150\"><b>Række2</b></td>
    <td width=\"60\"><b>Række3</b></td>
    <td width=\"50\"><b>Række4</b></td>
  </tr>

  <tr bgcolor=#FFFFFF>
    <td height=\"22\">TEST</td>
    <td>123456</td>
    <td>INT123</td>
    <td align=\"center\"><input type=\"checkbox\" name=\"chkdelete0\"></td>
  </tr>

  <tr bgcolor=#C0C0C0>
    <td height=\"22\">Diverse</td>
    <td>654321</td>
    <td>INT123</td>
    <td align=\"center\"><input type=\"checkbox\" name=\"chkdelete1\"></td>
  </tr>
 
  <tr bgcolor=#FFFFFF>
    <td height=\"22\">Test igen</td>
    <td>123456</td>
    <td>INT321</td>
    <td align=\"center\"><input type=\"checkbox\" name=\"chkdelete2\"></td>
  </tr>
  <tr bgcolor=#C0C0C0>
    <td height=\"22\">TESTER</td>
    <td>654321</td>
    <td>INT321</td>
    <td align=\"center\"><input type=\"checkbox\" name=\"chkdelete3\"></td>
  </tr>
</table>

Snowball
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:09 #1
hvad hedder framen med checkboxene ?
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:11 #2

function isChecked()
{
  var objsChk = parent.frames[0].document.all.tags(\'CHECKBOX\');
  var i;
  var result = true;

  for(i=0;i<objsChk.length;i++)
    result &= objsChk[i].checked;

  return result;
}
Avatar billede snowball Novice
11. december 2001 - 11:11 #3
frameList :)

Snowball
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:12 #4
hmm - logikken er forkert - skal være:

function isChecked()
{
  var objsChk = parent.frames[0].document.all.tags(\'CHECKBOX\');
  var i;
  var result = false;

  for(i=0;i<objsChk.length;i++)
    result |= objsChk[i].checked;

  return result;
}
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:14 #5
ok - så er det:

parent.frameList.document.all

eller

parent.frames[\'frameList\'].document.all

Men document.all er ie only. Måske findes der en dom funktion der kan finde alle tags af en bestemt type - getElementsByTag() ?
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:16 #6
hmm - tilsyneladende virker document.all.tags(\'CHECKBOX\') ikke...

øjeblik
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:18 #7
det her kan gøre det, men stadig kun i ie:

function isChecked()
{
  var objsInput = document.all.tags(\'input\');
  var i;
  var result = false;

  for(i=0;i<objsInput.length;i++)
  {
    if(objsInput[i].type==\'checkbox\')
      result |= objsInput[i].checked;
  }
  return result;
}
Avatar billede jakoba Nybegynder
11. december 2001 - 11:18 #8
Lidt enklere og mere crossbrowser (men ellers essentielt det samme):

function isChecked()
{
  var objsChk = parent.frames[0].document.formnavn.elements;
  var i;

  for(i=0;i<objsChk.length;i++)
    if ( objsChk[i].type==\'checkbox\' && objsChk[i].checked ) return true;

  return false;
}
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:20 #9
HEY - der står ikke noget med en form :-)
Avatar billede jakoba Nybegynder
11. december 2001 - 11:28 #10
html tillader kun <input kommandoer indeni en <form container.
IE tillader dem dog uden, så sammen med \'document.all\' behøves der ikke nogen <form.

mvh JakobA
Avatar billede tknudsen Nybegynder
11. december 2001 - 11:29 #11
touché

(how do you know these things ? :-)
Avatar billede jakoba Nybegynder
11. december 2001 - 11:40 #12
bin there, fallen in that hole :-))
Avatar billede snowball Novice
11. december 2001 - 12:01 #13
tknudsen\'s svar fra 11:18:41 er den eneste der så\'n lige umiddelbart virker, dog så returnerer den altid False !? ;)

Snowball
Avatar billede tknudsen Nybegynder
11. december 2001 - 12:07 #14
det skyldes nok lidt type-forvirring i javascript - hvis du gør det sådan her burde det virke:

function isChecked()
{
  var objsInput = document.all.tags(\'input\');
  var i;
  var result = false;

  for(i=0;i<objsInput.length;i++)
  {
    if(objsInput[i].type==\'checkbox\')
      result |= objsInput[i].checked;
  }
  if(result)
    return true;
  else
    return false; 
} 
Avatar billede snowball Novice
11. december 2001 - 12:11 #15
Nope. Får stadig altid False tilbage !

Snowball
Avatar billede snowball Novice
11. december 2001 - 12:13 #16
DOH!

Min fejl, sorry. Det virker perfekt ;)

Snowball
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