使用jquery获取选定的单选按钮

时间:2014-03-27 21:45:14

标签: javascript jquery

我有一个看起来像这样的表格:

<input type="radio" id="answer0" name="answer0" value="1" />
<input type="radio" id="answer0" name="answer0" value="2" />
<input type="radio" id="answer0" name="answer0" value="3" />
<input type="radio" id="answer0" name="answer0" value="4" />

我想要的是获取所选单选按钮,以便我使用下面的jQuery代码。

var id = "#answer0";

var isChecked = $(id).prop('checked');

但是我只在选中第一个单选按钮时得到结果。如果我选择第二个,第三个和第四个,那就没有结果。请帮忙。

对不起,对不起。我在php中生成单选按钮......

print '<input type="radio" class="answer'. $q . '" id="answer'. $q . '" name="answer'. $q . '"value="1"/>' . $row['answer1'] .'<br/>';
print '<input type="radio" class="answer'. $q . '" id="answer'. $q . '" name="answer'. $q . '"value="2"/>' . $row['answer2'] .'<br/>';
print '<input type="radio" class="answer'. $q . '" id="answer'. $q . '" name="answer'. $q . '"value="3"/>' . $row['answer3'] .'<br/>';
print '<input type="radio" class="answer'. $q . '" id="answer'. $q . '" name="answer'. $q . '"value="4"/>' . $row['answer4'] .'<br/>';

所以我确定id是唯一的。我要做的是获取answer0,answer1的所选单选按钮值等等......到目前为止,我只能得到第一组值(answer0)。

我的jquery代码:

for ( var i = 1; i <=items; i++ ) {
    var t = "answer" + i;

    if($('.' + t).prop('checked')){
        //alert(this.id);
        alert(t);
        correct++;
    }

    alert(correct);

    }}

5 个答案:

答案 0 :(得分:1)

元素的ID必须是唯一的。

为这些输入提供一个类名,例如.radio。

<input type="radio" id="answer0" class='radio' name="answer0" value="1" />
<input type="radio" id="answer1" class='radio' name="answer0" value="2" />
<input type="radio" id="answer2" class='radio' name="answer0" value="3" />
<input type="radio" id="answer3" class='radio' name="answer0" value="4" />

然后:

$('.radio').each(function(){
if($(this).prop('checked')){alert(this.id);}
});

您可以看到它的演示here

编辑:你知道,但课程不必是独一无二的。在你的循环中,你没有使用ID,你为每个元素使用不同的类名。所以要么改变。对于#或只是按照演示中的说明进行操作

如果您想查看所有收音机的值,请删除条件

$('.radio').each(function(){
alert(this.id+" "+this.value);
});

如果您只想查看所选收音机的值,则:

$('.radio').each(function(){
    if($(this).prop('checked')){alert(this.id+" "+this.value);}
});

我的建议

我认为你应该把它包装成像这样的函数

function getSelectedRadioValue(){
    $('.radio').each(function(){
        if($(this).prop('checked')){return this.value;}
    });
}

您可以随时拨打电话

if(getSelectedRadioValue()=='1'){
// make some magic
}else{
// more magic
}

答案 1 :(得分:1)

试试这个:

$("input:radio[name=answer0]").click(function(){;
    alert($(this).val());
    });

答案 2 :(得分:0)

ID应该是唯一的,为它们添加 NON-UNIQUE 类并执行以下操作:

$('input.class:checked').val()

或者如果您不想使用类,请使用您已有的名称(只需确保ID是唯一的 - 它是必须):

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

编辑:现在您已编辑原始帖子,请尝试以下操作:

print '<input type="radio" class="answer" id="answer'. $q . '" name="answer'. $q . '"value="1"/>' . $row['answer1'] .'<br/>';
print '<input type="radio" class="answer" id="answer'. $q . '" name="answer'. $q . '"value="2"/>' . $row['answer2'] .'<br/>';
print '<input type="radio" class="answer" id="answer'. $q . '" name="answer'. $q . '"value="3"/>' . $row['answer3'] .'<br/>';
print '<input type="radio" class="answer" id="answer'. $q . '" name="answer'. $q . '"value="4"/>' . $row['answer4'] .'<br/>';

然后获取值只需执行此操作:

var value = $('input.answer:checked').val()

现在value包含所选值

答案 3 :(得分:0)

它们都共享相同的ID,HTML中的唯一ID是必须。此外,为所述ID硬编码单个变量会更方便。

<input type="radio" id="answer0" name="answer0" value="1" />
<input type="radio" id="answer1" name="answer1" value="2" />
<input type="radio" id="answer2" name="answer2" value="3" />
<input type="radio" id="answer3" name="answer3" value="4" />

var id0 = "answer0";

var isChecked = $(id0).prop('checked');

等等。

答案 4 :(得分:0)

使用class而不是id。

<input type="radio" class="answer0" name="answer0" value="1" />
<input type="radio" class="answer0" name="answer0" value="2" />
<input type="radio" class="answer0" name="answer0" value="3" />
<input type="radio" class="answer0" name="answer0" value="4" />

$(function(){
    $('.answer0').on('change', function(){
        alert($(this).val()); 
    });
});

Here's a fiddle