Avatar billede dnm Nybegynder
05. juli 2003 - 23:20 Der er 3 kommentarer

Aktivering af Radiobutton via Javascript

Jeg har med ASP udviklet en tabel som hiver en masse data'er ud fra en database. Først i hver række er der en radiobutton hvor man kan vælge rækken.

Nu vil jeg gerna have det sådan at når man trykker på rækken så aktiveres rækkens radiobutton ligesom hvis man trykkede på knappen selv.

Nogen ide til hvordan man gør det?
Avatar billede roenving Novice
05. juli 2003 - 23:28 #1
Jeps,
<tr id='tr3' onclick="document.getElementById(this.id+'radio').checked=true;">

Så sørger du bare for, at dine radios har et id, som hedder id="tr3radio" osv.

De må stadig gerne have samme name="radios", så de opfører sig som radios !-)
Avatar billede netsi64 Nybegynder
07. juli 2003 - 23:08 #2
Okay, det blev en "deLuxe" løsning, men den virker :-)

<HTML>
<HEAD>
<TITLE>373088: Aktivering af Radiobutton via Javascript</TITLE>
<script language="javascript" type="text/javascript">
<!--
  var oSelectedRow;
  function setRadio()
  {
    // Der klikkes på et childElement fra en TR, ergo må
    // vi have fat i parentNode
    var oRow = event.srcElement.parentNode;
    var cInputTagsInRow = oRow.getElementsByTagName('input');

    var sEventType = event.type;
    // click funktion
    if (sEventType=='click')
    {
      var iFound = -1;
      for(var i=0; ((iFound<0) && (i<cInputTagsInRow.length)); i++)
      {
        if (cInputTagsInRow[i].type.toLowerCase()=='radio')
        {
          iFound = i;
          cInputTagsInRow[i].checked = true;
        }
      }
      if (oSelectedRow)
      {
          oSelectedRow.selected = false;
          oSelectedRow.className = 'allowSelect';
      }
      oRow.className = 'allowSelected';
      oRow.selected = true;
      oSelectedRow = oRow;
    }

    // mouseover funktion
    if (sEventType=='mouseover')
    {
        oRow.className = 'allowSelectHover';
    };

    // mouseout funktion
    if (sEventType=='mouseout')
    {
      oRow.className = (oRow.selected) ? 'allowSelected' : 'allowSelect';
    };
  }

  function activateSelectableRows()
  {
    // De tableRows (TR) der er af CSS classen "allowSelect"
    // Skal tilføjes event "onclick" - jeg har også tilføjet
    // en "hover" funktion - som du dog ikke har spurt efter...
    var cRows = document.getElementsByTagName('tr');
    for(var i=0; (i<cRows.length); i++)
    {
      if (cRows[i].className=='allowSelect')
      {
        cRows[i].onclick = setRadio;
        cRows[i].onmouseover = setRadio;
        cRows[i].onmouseout = setRadio;
      }
    }
  };

  window.onload = activateSelectableRows;
  function init()
  {
    activateSelectableRows();
  };
//-->
</script>
<style>
.allowSelect {cursor: hand}
.allowSelected {background-color: #eef}
.allowSelectHover {cursor: hand; background-color: #aae}

td,th  {text-align: left}
.pris {text-align: right}
</style>
</HEAD>
<BODY >
<table border="0" cellpadding="0" cellspacing="0" width="500">
<tr onclick="setRadio(this)">
  <th>Valgt</td>
  <th>VareNr</td>
  <th>Beskrivelse</td>
  <th class="pris">Pris</td>
</tr>
<tr class="allowSelect" onclick="setRadio(this)">
  <td><input type="radio" name="radioGroup" value="r1"></td>
  <td>TYND006</td>
  <td>Den næst hurtigste computer</td>
  <td class="pris">255,00</td>
</tr>
<tr class="allowSelect" onclick="setRadio(this)">
  <td><input type="radio" name="radioGroup" value="r1"></td>
  <td>FED112</td>
  <td>Den hurtigste computer</td>
  <td class="pris">355,00</td>
</tr>
<tr class="allowSelect" onclick="setRadio(this)">
  <td><input type="radio" name="radioGroup" value="r1"></td>
  <td>TYK333</td>
  <td>Er du <b>så</b> færdig?!</td>
  <td class="pris">1355,00</td>
</tr>
</table>

</BODY>
</HTML>
Avatar billede thoeger_poertner Nybegynder
22. juli 2003 - 05:59 #3
luk?
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