How do I get the text of a radio button (not the value)

19,466

Solution 1

It doesn't work because there is no such thing as text inside an <input> like that -- that's illegal in XHTML. It must be:

<input type="radio" name="colors" value="red" id="radio1" checked="checked" /><label for="radio1">apple</label>

Then you can look for the text inside the <label>.

Solution 2

elem.nextSibling.nodeValue.replace('\n', '')

The replace is to get rid of the newline (may be different on different OSes, I am running Windows) character which is there for some reason.

Solution 3

<form id="myForm">
  <ul>
      <li><input type="radio" name="colors" value="red">apple</li>
      <li><input type="radio" name="colors" value="blue">sky</li>
      <li><input type="radio" name="colors" value="green">grass</li>
  </ul>
</form>

<script> 
(function(){
    var form = document.getElementById("myForm");

    var colorFields = form.elements["colors"];

   alert(colorFields[0].nextSibling.data); //alerts the text apple not the value red. 
});
Share:
19,466
user2856501
Author by

user2856501

Updated on June 27, 2022

Comments

  • user2856501
    user2856501 almost 2 years

    I know I can get the "value" attribute of a radiobutton but I'm finding it strangely difficult to get the text of the radiobutton.

    Consider the example below. It has 3 radiobuttons and tries to alert the value of the first radio button, which is "red" and then trys to alert the text of the radiobutton, "apple" but that fails.

    Getting the text of almost any element can be done with elem.childNodes[0].nodeValue. Why doesn't it work for radiobuttons?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
    <head>
    <title>Radio Buttons</title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    function start(){
      var rblist = document.getElementsByName("colors");
      var elem = rblist[0];
      alert(elem.value); // PRINTS "RED"
      alert(elem.childNodes[0].nodeValue); //THROWS ERROR
    }
    </script>       
    </head>
    <body onload="start();">
    <input type="radio" name="colors" value="red" checked>apple</input>
    <input type="radio" name="colors" value="blue">sky</input>
    <input type="radio" name="colors" value="green">grass</input>
    </body>  
    </html>