• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 536
  • Last Modified:

for loop checking radio button

hi all,

 i have some html with radio buttuns

I'm using a javscript for loop to loop through them all to see which one is checked.

What I am finding is if there is only ONE radio buton, even though i click it the javascript isn't recognising it's checked


for (var i = 0; i < document.forms['radio'].test.length; i++) {
  if (document.forms['radio'].test[i].checked) {
    alert ('we checked one');      
    return false;
  }                  
}

so i have one radion button on a form, clicking it so it's checked butt it's not going into the loop

thanks for any help


0
dalecon
Asked:
dalecon
1 Solution
 
russhuntingtonCommented:
Can you post the full hmtl? It will help us idenitify the problem.
0
 
daleconAuthor Commented:
<html>

<head>

<script language="javascript">

      function testchecked()
         {


            alert ('in fucntion');

            for (var i = 0; i < document.forms['radio'].radiotest.length; i++) {

                        alert ('in for loop');

                  if (document.forms['radio'].radiotest[i].checked) {


                        alert ('in if');

                  }

            }
         }

</script>

</head>


            <form name="find" action="" method="post">
              <td align="left">
                        <input name="Submit" type="button" class="button" value="click" onClick="javascript:testchecked()">
                  </td>
            </form>



<table width="100%" border="0" cellpadding="1" cellspacing="0">
<form name="radio">
<tr>
  <td width="20%">aaa</td>
  <td width="15%">bbb</td>
  <td width="20%">ccc</td>
  <td width="40%" align="left" ><input type="radio" name="radiotest" value="1234"></td>
</tr>
</form>
</table>


</html>
0
 
daleconAuthor Commented:
if i do alert( document.forms['radio'].radiotest.length);

it comes up with undefined, even though there is a radiotest
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
HonorGodCommented:
Try something like this:
<html>
<head>
<script type='text/javascript'>
  function testchecked() {
//  alert ('testchecked() : len = ' + document.forms[ 1 ].radiotest.length );
    var radiotest = document.forms[ 1 ].radiotest;
    var picked = null;
    for (var i = 0; i < radiotest.length; i++) {
      if ( radiotest[ i ].checked ) {
        picked = radiotest[ i ];
      }
    }
    if ( picked ) {
      alert( 'checked = ' + picked.value );
    } else {
      alert( 'Please select a value' );
    }
  }
</script>
 
</head>
<body>
  <form name='find' action='' method='post'>
    <input name='Submit' type='button' class='button' value='click' onClick='javascript:testchecked()'>
  </form>
 
  <form name='radio'>
    <table width='100%' border='0' cellpadding='1' cellspacing='0'>
      <tbody>
        <tr>
          <td >aaa</td>
          <td >bbb</td>
          <td >ccc</td>
          <td  align='left' ><input type='radio' name='radiotest' value='1234'></td>
        </tr>
        <tr>
          <td >ddd</td>
          <td >eee</td>
          <td >fff</td>
          <td  align='left' ><input type='radio' name='radiotest' value='2345'></td>
        </tr>
      </tbody>
    </table>
  </form>
</body>
</html>

Open in new window

0
 
HonorGodCommented:
btw, when you only have one matching value, the result of the reference is not an array.  So with only one "radiotest" input field, this

document.forms[ 1 ].radiotest

references the one and only matching item in the document
0
 
SasDevCommented:
I've been looking for a solution to this problem of mine and was able to attain a resolution with the help of the "Accepted Solution" in this thread.

Thanks 'HonorGod', your solution helped me!
0
 
HonorGodCommented:
SasDev:  Good.  I'm glad to hear it.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now