0

A html form with radio buttons which is assiociated with HTML label which looks like this.

<form action="demo_form.aspx">
  <label for="male">Male</label>
  <input type="radio" name="sex" id="male" value="male"><br>
  <label for="female">Female</label>
  <input type="radio" name="sex" id="female" value="female"><br>
  <input type="submit" value="Submit">
</form> 

how to get values when user clicks radio buttons either using java script or using server-side script (ASP.Net- C#) ? And also which one of this will be more appropriate to use.

sudhakarssd
  • 431
  • 4
  • 11
  • 25

3 Answers3

1

Try this Script:

    window.onload = function () {
    var btnSubmit = document.getElementById('btn-submit');
    btnSubmit.onclick = function (e) {
        e.preventDefault();
        var radioInputs = document.querySelectorAll('#myform input[type="radio"][name="sex"]');                 
        for (var i = 0; i < radioInputs.length; i++) {
            if (radioInputs[i].checked)
            {
                var value = getlabelforValue(radioInputs[i]);
                alert(value);
            }
        }
        document.getElementById("myform").submit();
    };
};

function getlabelforValue(inputname) {
    var labelElements = document.querySelectorAll('#myform label');
    for (var i = 0; labelElements[i]; i++) {
        console.log(labelElements[i]);
        if (labelElements[i].getAttribute('for') == inputname.getAttribute('id')) {
            return labelElements[i].innerText || labelElements[i].textContent;
        }
    }
    return null;
}

Html:

<form id="myform" action="demo_form.aspx">
    <label for="male">Male</label>
    <input type="radio" name="sex" id="male" value="male" /><br />
    <label for="female">Female</label>
    <input type="radio" name="sex" id="female" value="female" /><br />
    <input type="submit" id="btn-submit" value="Submit">
</form>

Here is the Demo

Or

In code behind you can do this to get value.

string radioValue = String.Format("{0}", Request.Form['sex']);

super
  • 2,288
  • 2
  • 21
  • 23
  • i needed label value actually. you used radio name to get the value is it possible to get label value. – sudhakarssd Nov 26 '13 at 05:59
  • label.innerHTML is working but label.innerText is not working wonder why ? – sudhakarssd Nov 26 '13 at 06:29
  • @SDKLive `innerText` is non-standard, it significantly differs from `textContent`, because first one is doing pretty printing (for example,
    are converted to new lines), while second one - is not.
    – super Nov 26 '13 at 07:38
0

Please try this: 1. add to each input tag attribute class="sex". 2. use jquery you can do like this:

$('.sex').click(function(){
   alert($(this).val());
})
Ringo
  • 3,795
  • 3
  • 22
  • 37
0

Reworked on script given by @bios. This is shorter version of the script.

 window.onload = function () {
        var btnSubmit = document.getElementById('btn-submit');
        btnSubmit.onclick = function (e) {
            e.preventDefault();

            var radioInputs = document.querySelectorAll('#myform input[type="radio"][name="sex"]');                 
            var labelElements = document.querySelectorAll('#myform label');

            for (var i=0; i<radioInputs.length; i++){

                for (var j = 0; labelElements[j]; j++) {

                    if (radioInputs[i].checked)
                    {
                        var rdval = radioInputs[i].getAttribute('id');
                        var lblval = labelElements[j].getAttribute('for');

                        if(rdval == lblval){                    
                            var val = labelElements[j].textContent;
                            alert(val);                 
                        }
                    }
                }
            }
        };
   };

HTML

<form id="myform" action="demo_form.aspx">
    <label for="male">Male</label>
    <input type="radio" name="sex" id="male" value="male" /><br />
    <label for="female">Female</label>
    <input type="radio" name="sex" id="female" value="female" /><br />
    <input type="submit" id="btn-submit" value="Submit">
</form>
sudhakarssd
  • 431
  • 4
  • 11
  • 25