如何在div包装器中使用无线电组并使用jquery获取选定的值

时间:2013-06-26 20:52:40

标签: jquery selector

如果未选择任何单选框,则返回0,如果选中,则返回所选值

<div class="radiogroup">A.
    <input type="radio" name=a1 value="1">$item[2]
    <br/>B.
    <input type="radio" name=a1 value="2">$item[3]
    <br/>C.
    <input type="radio" name=a1 value="3">$item[4]
    <br/>D.
    <input type="radio" name=a1 value="4">$item[5]
    <br/>E.
    <input type="radio" name=a1 value="0">Not sure
    <br/>
</div>
<div class="radiogroup">A.
    <input type="radio" name=a2 value="1">$item[2]
    <br/>B.
    <input type="radio" name=a2 value="2">$item[3]
    <br/>C.
    <input type="radio" name=a2 value="3">$item[4]
    <br/>D.
    <input type="radio" name=a2 value="4">$item[5]
    <br/>E.
    <input type="radio" name=a2 value="0">Not sure
    <br/>
</div>
<div class="radiogroup">A.
    <input type="radio" name=a3 value="1">$item[2]
    <br/>B.
    <input type="radio" name=a3 value="2">$item[3]
    <br/>C.
    <input type="radio" name=a3 value="3">$item[4]
    <br/>D.
    <input type="radio" name=a3 value="4">$item[5]
    <br/>E.
    <input type="radio" name=a3 value="0">Not sure
    <br/>
</div>

这是我的代码:

$(function () {
    $("#submit").click(function () {
        var arr = new array();
        var k = 0;
        $(".radiogroup").each(function () {
            if ($(this."input:radio:checked").length == 0) {
                arr[k++] = 0;
            } else {
                arr[k++] = $(this."input:radio:checked").val();
            }
        });
        return false;
    });

});

我所坚持的是我不知道如何使用“this”来选择div包装器中的无线电组,例如,如果我需要提醒每个检查的值,我想这样做,它虽然不起作用:

$(".radiogroup").each(function () {
    alert($(this.input: radio: checked).val());

});

在最终生成html代码之前,无线电组的数量是不确定的,因此name = a1,name = a2会停止到我甚至不知道的数字,这意味着无法使用name作为变量。环

我需要在每个div包装器中选中已选中的单选框,每个收音机没有id,如何做到这一点?

3 个答案:

答案 0 :(得分:2)

您需要更改

 if ($(this."input:radio:checked").length == 0) {

 if ($(this).find("input[type=radio]:checked").length == 0) {

arr[k++] = $(this."input:radio:checked").val();

arr[k++] = $(this).find("input[type=radio]:checked").val();

答案 1 :(得分:1)

您需要更改说

的行

$(this."input:radio:checked")

$(this).find("input[type='radio']:checked"

var arr = new array();

以下任一项:

var arr = new Array();
var arr = [];

那就解决了。

这是一个fiddle,它有一个工作示例。

答案 2 :(得分:0)

你可以这样做:

$(".radiogroup").each(function() {
    console.log($(this).children("input[type='radio']:checked").val());
});