jQueryで、すべて同じ名前のラジオボタンの値を取得するにはどうすればよいですか?


108

これが私のコードです:

<table>
   <tr>
      <td>Sales Promotion</td>
      <td><input type="radio" name="q12_3" value="1">1</td>
      <td><input type="radio" name="q12_3" value="2">2</td>
      <td><input type="radio" name="q12_3" value="3">3</td>
      <td><input type="radio" name="q12_3" value="4">4</td>
      <td><input type="radio" name="q12_3" value="5">5</td>
   </tr>
</table>
<button id="submit">submit</button>

ここにJSがあります:

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]').val());
    });
 });

こちらがJSFIDDLEです!ボタンをクリックするたびに1が返されます。なぜですか?誰か助けてもらえますか?

回答:


226

コードでは、jQueryはnameを持つ入力の最初のインスタンスを検索します。q12_3この場合、値は1です。という名前の入力が必要q12_3です:checked

$("#submit").click(() => {
  const val = $('input[name=q12_3]:checked').val();
  alert(val);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table>
  <tr>
    <td>Sales Promotion</td>
    <td><input type="radio" name="q12_3" value="1">1</td>
    <td><input type="radio" name="q12_3" value="2">2</td>
    <td><input type="radio" name="q12_3" value="3">3</td>
    <td><input type="radio" name="q12_3" value="4">4</td>
    <td><input type="radio" name="q12_3" value="5">5</td>
  </tr>
</table>
<button id="submit">submit</button>

上記のコードはの使用と同じではないことに注意してください.is(":checked")。jQueryのis()関数は、要素ではなくブール値(trueまたはfalse)を返します。


この答えは注目を集め続けているので、バニラJavaScriptスニペットも含めます。

document.querySelector("#submit").addEventListener("click", () => {
  const val = document.querySelector("input[name=q12_3]:checked").value;
  alert(val);
});
<table>
  <tr>
    <td>Sales Promotion</td>
    <td><input type="radio" name="q12_3" value="1">1</td>
    <td><input type="radio" name="q12_3" value="2">2</td>
    <td><input type="radio" name="q12_3" value="3">3</td>
    <td><input type="radio" name="q12_3" value="4">4</td>
    <td><input type="radio" name="q12_3" value="5">5</td>
  </tr>
</table>
<button id="submit">submit</button>


16

セレクターで、チェック済みのラジオボタンが必要であることも指定する必要があります。

$(function(){
    $("#submit").click(function(){      
        alert($('input[name=q12_3]:checked').val());
    });
 });

1
「未定義」の値を取得しています
Pavan Alapati

@PavanAlapati HTMLも表示しないと、その理由を実際に伝えることはできません。理想的には、正確なHTMLスニペットと使用しているコードを使用して新しい質問を投稿します。ただし、次の場合にのみ未定義になります。セレクターの名前がラジオボタンの名前と一致しない場合。ラジオボタンはどれもチェックされていません。または、チェックされたラジオボタンに値が割り当てられていません。
デニス

7

セレクターを変更したいかもしれません:

$('input[name=q12_3]:checked').val()


7

別の方法もあります。以下のコードを試してください

$(document).ready(function(){

      $("input[name='gender']").on("click", function() {
            alert($(this).val());
        });
});



0

このスクリプトを使用

$('input[name=q12_3]').is(":checked");

4
jQueryのis関数はを返しますがboolean、この場合は役に立ちません。
デニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.