0

How to get radio button value in javascript using onChange?

Here's my HTML:

if (document.getElementById('male').checked) {
    document.getElementById('gender2').innerHTML = "Male";
}
    
if (document.getElementById('female').checked) {
    document.getElementById('gender2').innerHTML = "Femmale";
}
<div class="radio">
    <label>
       <input type="radio" name="gender" onChange="(checkGender)" id="male" value="Male">
      Male
    </label>
    <label>
      <input type="radio" name="gender" onChange="(checkGender)" id="female" value="Female">
      Female
    </label>
</div>

<td>Gender</td>
<td><span id="gender2"></span></td>
kabanus
  • 24,623
  • 6
  • 41
  • 74

4 Answers4

2

You need to define an actual function for call back:

function checkGender() {
    if (document.getElementById('male').checked) {
        document.getElementById('gender2').innerHTML = "Male";
    }
    
    if (document.getElementById('female').checked) {
        document.getElementById('gender2').innerHTML = "Femmale";
    }
}
<div class="radio">
    <label>
       <input type="radio" name="gender" onChange="checkGender()" id="male" value="Male">
      Male
    </label>
    <label>
      <input type="radio" name="gender" onChange="checkGender()" id="female" value="Female">
      Female
    </label>
</div>

<td>Gender</td>
<td><span id="gender2"></span></td>
kabanus
  • 24,623
  • 6
  • 41
  • 74
1

Your JavaScript is executed once, when the page loads. You need to call it when something changes (based on an event), and react to the change.

HTML:

<div class="radio">
    <label>
        <input type="radio" name="gender" onclick="checkGender()" id="male" value="Male">
        Male
    </label>
    <label>
        <input type="radio" name="gender" onclick="checkGender()" id="female" value="Female">
        Female
    </label>
</div>

JS:

function checkGender() {
    if (document.getElementById('male').checked) {
        document.getElementById('gender2').innerHTML = "Male";
    }

    if (document.getElementById('female').checked) {
        document.getElementById('gender2').innerHTML = "Femmale";
    }
}
Ivan Rubinson
  • 3,001
  • 4
  • 19
  • 48
1

Add an event handler to the container (.radio) using Element.addEventListener(). When the handler is triggered check if the event target is a radio button using Element.matches(). If is is and radio button update the value of the #gender1 div:

var radio = document.querySelector('.radio');
var gender2 = document.getElementById('gender2');

radio.addEventListener('change', function(e) {
  if(!e.target.matches('input[type=radio]')) return;
  
  gender2.innerText = e.target.value;
});
<div class="radio">
  <label>
        <input type="radio" name="gender" value="Male">
        Male
    </label>
  <label>
        <input type="radio" name="gender" value="Female">
        Female
    </label>
</div>

<div id="gender2"></div>
Ori Drori
  • 183,571
  • 29
  • 224
  • 209
0

You can add an event listener on radio buttons and check for the values.

var radios = document.querySelectorAll('input[type=radio]');

var genderEl = document.getElementById("gender");

for(var i=0; i< radios.length; i++)
{
     radios[i].addEventListener("click", function(){
       genderEl.innerHTML = this.value
     
     })

}
<div class="radio">
    <label>
        <input type="radio" name="gender"   id="male" value="Male">
        Male
    </label>
    <label>
        <input type="radio" name="gender"   id="female" value="Female">
        Female
    </label>
    
    <h3 id="gender"></h3>
</div>

Note: You should always use eventlisteners rather than using inline event handlers. Inline event handlers are evaluated as eval. Moreover, it's a bad practice

Muhammad Usman
  • 10,039
  • 22
  • 39