【javascript】ラジオボタンがクリックされたイベントをハンドリングする

ラジオボタンがクリックされたり、選択されたイベントをハンドリングするコードです。

チェック状態が変更された際に実行されます。

ラジオボタンの場合は、同じラジオボタングループにする場合、nameの値を同じにします。

そのため、nameを使うと一意のオブジェクトにならず、イベントハンドラを登録しづらいですよね。

それぞれにID属性を付けてもいいですが、ラジオボタンのオプションすべてに一意なIDを振るのも。。。という場合には以下のTipsが使えます。

そこで、getElementsByName()で同じラジオボタングループの要素を配列で取得し、それに対して、forEachでイベントリスナを登録すると、どのラジオボタンを押してもイベントが発火します。

どのボタンがチェックされたのかを取得するには、querySelectorとchecked属性を使うといいでしょう。

HTML側のソース

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>Test</title>

</head>
<body>
  <form name="form1" action="">
    <input name="RadioGroup1" type="radio"  value="Radio1"/>
      <label for="Radio1">ラジオボタン1</label>
    <input name="RadioGroup1" type="radio"  value="Radio2" />
      <label for="Radio2">ラジオボタン2</label>
    <input name="RadioGroup1" type="radio"  value="Radio3" />
      <label for="Radio3">ラジオボタン3</label>
  </form>

  <div id="output"></div>
</body>
</html>

JavaScript側のソース(イベントリスナを配列に登録)

<script type="text/javascript" language="javascript">

window.onload = function() {

    var checkOption = document.getElementsByName('RadioGroup1');
    
    checkOption.forEach(function(e) {
        e.addEventListener("click", function() {           
            console.log(document.querySelector("input:checked[name=RadioGroup1]").value);
        });
    });

};
</script>