arvind
arvind

Reputation: 157

Radio button returning undefined value in javascript

http://jsfiddle.net/jngpjbjm/

Have a look at the fiddle link attached. Radio button value is returning a undefined value. I don't why. Please help with this.

<input type="radio" name="arv" value="1">1
<br>
<input type="radio" name="arv" value="2">2

var radio = document.getElementsByName('arv');
radio[0].addEventListener('click', check());
radio[1].addEventListener('click', check());

function check() {
for (var i = 0; i < radio.length; i++) {
    var rcheck = radio[i].checked;
    if (!rcheck) {
        alert(rcheck.value);

    }

}
}

Upvotes: 2

Views: 7629

Answers (4)

mplungjan
mplungjan

Reputation: 178411

This version will work in all browsers.

window.onload=function() {
  var radios = document.getElementsByName('arv');
  for (var i=0;i<radios.length;i++) {
    radios[i].onclick=function() {
      alert(this.value);
    }
  }
}

onclick

Because it was essentially part of DOM 0, this method is very widely supported and requires no special cross–browser code; hence it is normally used to register event listeners dynamically unless the extra features of addEventListener() are needed.

Upvotes: 0

Ally Jr
Ally Jr

Reputation: 1075

I have tried to remove all excessive code from your original script as being unnecessary (kind of), whats left are the bare essentials. thanks @mplungjan

Try this:

var radio = document.getElementsByName('arv');
// here is how to add event listeners like the pros over at MDN
radio[0].addEventListener('click', check, false);
radio[1].addEventListener('click', check, false);

  function check(e) {
//simply grab the event by passing it as "e" and capturing its target.value
        var rcheck = e.target.value;
            alert(rcheck);

    }

Upvotes: 2

Fahim
Fahim

Reputation: 12388

Use this

var radio = document.getElementsByName('arv');
radio[0].addEventListener('click', check);
radio[1].addEventListener('click', check);

function check() {
for (var i = 0; i < radio.length; i++) {
    var rcheck = radio[i].checked;
    if (!rcheck) {
        alert(radio[i].value);

    }

}
}

Upvotes: 0

ngduc
ngduc

Reputation: 1413

Try this: http://jsfiddle.net/jngpjbjm/3/

It should be:

alert(radio[i].value);

Maybe you need something like this?

function check() { alert( event.target.value ); } http://jsfiddle.net/jngpjbjm/9/

Upvotes: 3

Related Questions