在 jQuery 中,当单选按钮都有相同的名称时,如何获得它们的值?

这是我的代码:

<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。为什么? 有人能帮我吗?

279158 次浏览

in your selector, you should also specify that you want the checked radiobutton:

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

You might want to change selector:

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

In your code, jQuery just looks for the first instance of an input with name q12_3, which in this case has a value of 1. You want an input with name q12_3 that is :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>

Note that the above code is not the same as using .is(":checked"). jQuery's is() function returns a boolean (true or false) and not (an) element(s).


Because this answer keeps getting a lot of attention, I'll also include a vanilla JavaScript snippet.

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>

use this script

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

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

There is another way also. Try below code

$(document).ready(function(){


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

DEMO : https://jsfiddle.net/ipsjolly/xygr065w/

$(function(){
$("#submit").click(function(){
alert($('input:radio:checked').val());
});
});