logan
logan

Reputation: 8346

on button click show Radio button value is not working when radio value is changed

I am using following on button click inline javascript to show Radio button value. But it is always showing English even if i change the value

<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="English" checked="checked">English &nbsp;&nbsp;

<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Tamil">Tamil &nbsp;&nbsp;
<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Hindi">Hindi</div><br>
<input type="button" class="button5" value="Continue" onclick="alert(document.getElementById('LanguageSelect').value);" />

my requirement is, need to show which radio is selected !

Upvotes: 0

Views: 129

Answers (4)

Vivek Kumar
Vivek Kumar

Reputation: 120

                    <input type="radio" name="LanguageSelect"  id="LanguageSelect" value="English" checked="checked">English &nbsp;&nbsp;

                    <input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Tamil">Tamil &nbsp;&nbsp;
                    <input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Hindi">Hindi</div><br>
                    <input type="button" class="button5" value="Continue" onclick="clickable()" />

                    function clickable(){

                    var val=document.querySelector('input[name="LanguageSelect"]:checked').value;

                    alert(val);
                    }

Upvotes: 1

Christos
Christos

Reputation: 53958

If you have only three options, the following solution would be reasonable:

<input type="radio" name="LanguageSelect"  id="LanguageSelect1" value="English" checked="checked">English &nbsp;&nbsp;

<input type="radio" name="LanguageSelect"  id="LanguageSelect2" value="Tamil">Tamil &nbsp;&nbsp;
<input type="radio" name="LanguageSelect"  id="LanguageSelect3" value="Hindi">Hindi</div><br>
<input type="button" class="button5" value="Continue" onclick="alertValue()" />

and then in a script define the alertValue function.

alertValue = function(){
    var language1 = document.getElementById('LanguageSelect1');
    var language2 = document.getElementById('LanguageSelect2');
    var language3 = document.getElementById('LanguageSelect3');

    if(language1.checked)
        alert(language1.value);
    if(language2.checked)
        alert(language2.value);
    if(language3.checked)
        alert(language3.value);
}

Check this one please Fiddle. I have tested there this solution.

If you don't have problem on selecting the elements with another way, then another approach would be the following:

<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="English" checked="checked">English &nbsp;&nbsp;

<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Tamil">Tamil &nbsp;&nbsp;
<input type="radio" name="LanguageSelect"  id="LanguageSelect" value="Hindi">Hindi</div><br>
<input type="button" class="button5" value="Continue" onclick="alertValue()" />

and the corresponding js function:

alertValue = function(){
    var radios = document.getElementsByTagName("input");

    for (var i=0;i<radios.length;i++)
        if (radios[i].checked)
            alert(radios[i].value);

}

Check this one please FiddleV2. I have tested there this solution.

Upvotes: 1

logan
logan

Reputation: 8346

i did it myself...

    onclick='if(document.getElementById(\'LanguageSelect1\').checked==true)
{alert(document.getElementById(\'LanguageSelect1\').value);} 
if(document.getElementById(\'LanguageSelect2\').checked==true)
{alert(document.getElementById(\'LanguageSelect2\').value);} 
if((document.getElementById(\'LanguageSelect3\').checked==true) 
{alert(document.getElementById(\'LanguageSelect3\').value);}'

Upvotes: -1

Afzaal Ahmad Zeeshan
Afzaal Ahmad Zeeshan

Reputation: 15860

Please change the IDs of the element, and then depending on the value, show an element.

Otherwise, DOM cannot do that on itself.

Solution

Remove the id="LanguageSelect" from the HTML, because even if some other is checked, the current element will still have the id property. Here is the example of your code:

enter image description here

Here is the fiddle where I tested your code: http://jsfiddle.net/afzaal_ahmad_zeeshan/q25ba/

So, once you remove that, you'll get the problem fixed.

When you're selecting the value, it will look up for the first element, it will have the value of English, and will alert!

You can either use jQuery or check for the checkness of the elements:

jQuery

$('input[type=radio]:checked').val(); // check for the checked radio

This is easy and simple! I would recommend you this.

However, if you want to get the value of the radio buttons using JavaScript, try this:

JavaScript

/* this event to get triggered on click */
function checkCheckness () {
   var radioButton = document.getElementsByName("LanguageSelect");
   /* always remember, name should be similar, ID MUST NEVER be similar
    * using similar ID among different elements is illegal in HTML */
   if(radioButton[0].checked) {
      alert(radioButton[0].value);
   }
   /* add some else statements */
}

Upvotes: 1

Related Questions