0

问题:

在单击或不单击时使用 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

4 回答 4

1

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

$(document).ready(function () {
    var selected_id = $('form input[type=radio]:checked').attr("id");
    $('#itemresponse').val(selected_id);
}
于 2012-06-11T13:34:13.790 回答
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" />');    
    }
});​​​​​​
于 2012-06-11T13:31:40.357 回答
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);
    }
);

演示

于 2012-06-11T13:33:02.307 回答
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 属性?因为您使用父级和索引进行了一些计算),所以我在函数中添加了注释,在那里进行您需要的计算。

祝你好运!

于 2012-06-11T13:26:40.410 回答