使用jQuery从单选按钮获取id值

时间:2012-06-11 13:18:18

标签: jquery html forms radio-button

问题:

单击或不使用jQuery从单选按钮获取id。 jQuery应检测该值是否已设置并选择它或在单击时选择它。

HTML代码(场景1 - 未做出选择):

<th><input type="radio" name="itemquestion" id="1" value="11"></th>
<th><input type="radio" name="itemquestion" id="2" value="12"></th>
<th><input type="radio" name="itemquestion" id="3" value="13"></th>
<th><input type="radio" name="itemquestion" id="4" value="14"></th>
<th><input type="radio" name="itemquestion" id="5" value="15"></th>

HTML代码(方案2 - 已做出选择):

<th><input type="radio" name="itemquestion" id="1" value="11"></th>
<th><input type="radio" name="itemquestion" id="2" value="12" checked="checked"></th>
<th><input type="radio" name="itemquestion" id="3" value="13"></th>
<th><input type="radio" name="itemquestion" id="4" value="14"></th>
<th><input type="radio" name="itemquestion" id="5" value="15"></th>

jQuery代码:

$('input[type=radio]', $('#itembuttons')).click(
    function() {
        var pos = $(this).parent().index() + 1;
        $('#itemresponse').val(pos);
    }
);

问题:

如何修改jQuery以便除了执行click()之外还检测哪个单选按钮已经提交并返回该id(在这种情况下是2)?换句话说,用户可以在不单击单选按钮的情况下提交表单,但我希望#itemresponse包含id值2.

4 个答案:

答案 0 :(得分:1)

在表单上添加.submit事件处理程序,类似这样

$('#myform').submit(function(){
    var $selected = $('input[type="radio"]​​​​:checked');
    //Extract the value you need here either $selected.attr('id'); or whatever
});

我使用.checked选择器

注意:当您说提交时已选中哪个单选按钮并返回 id

时,我不清楚您的意思

我不确定 id 指的是什么(id属性?因为你用父和索引进行了一些计算),所以我在函数中添加了注释,在那里做你需要的计算

祝你好运!

答案 1 :(得分:1)

在提交表单之前,您需要检查是否选中了单选按钮。尝试这样的事情:

$('#form').on('submit', function(e){
    if($('input[type=radio]:checked', $('#itembuttons')).length > 0){
        //Checked, do nothing
        //var pos = $('input[type=radio]:checked').attr('id');
    }else{
        //Not checked: Append an input
        $('#form').append('<input type="hidden" name="itemquestion" value="2" />');    
    }
});​​​​​​

答案 2 :(得分:1)

为了完整性,因为你要求两者。

加载时存储选择(由John Lawrence指定):

$(document).ready(function () {
    var selected_id = $('input[type="radio"]:checked').attr("id");
    $('#itemresponse').val(selected_id);
});

用户更改选择:

$('input[type="radio"][name="itemquestion"]').click(
    function() {
        var pos = $(this).attr('id');
        $('#itemresponse').val(pos);
    }
);

DEMO

答案 3 :(得分:1)

如果您想在用户点击单选按钮之前填充,可以添加此项以在页面加载时设置值:

$(document).ready(function () {
    var selected_id = $('form input[type=radio]:checked').attr("id");
    $('#itemresponse').val(selected_id);
}