0

我想用单选按钮构建表单,我需要检测是否已选择所有单选按钮。

这是很容易的功能.change。在我的情况下:

    $('input:radio').change(function() {
    alert($('[name|="pyt10"]:checked').val() + " / " + $('[name|="pyt11"]:checked').val() + " / "+ 
})

但这是一个小问题——我有 3 组收音机。当我选择第一个收音机时,警报告诉我,所有字段都是未定义的,在第二个选择后第一个收音机有值,但第二个仍然未定义,依此类推。

这意味着,我的警报在更改之前而不是之后显示无线电值。

选择后我应该怎么写单选值?

4

5 回答 5

2

对于您的直接问题,“我需要检测是否已选择所有收音机。”,您可以使用这个:

var radios = $('input:radio').on("click", function () {
    alert(radios.length === radios.filter(":checked").length);
});

演示:http: //jsfiddle.net/VWrzN/1/

于 2013-05-02T13:45:09.837 回答
1

您还可以循环输入:

$('input:radio').change(function(){
        myArray = new Array();
        $('input:radio').each(function(){
            this.checked ? myArray.push(this.value) : myArray.push("notChecked");
        })
        alert(myArray.join("/"))
    })  
于 2013-05-02T13:52:09.620 回答
0

另一种方法:如果您使用表单标签包装(或可以包装)您的单选组,您可以检查是否设置了与组一样多的值:

$('#radios').on('change', ':radio', function () {
    var form = $(this).closest('form'),
        full = form.serializeArray().length == 2;
    console.log(full);
});

jsfiddle

form.serializeArray()如果选中该组的一个单选按钮,将返回一个包含每个单选组值的数组。

于 2013-05-02T14:11:39.033 回答
0

你不远了。而不是警报

$('[name|="py10"]:checked

确保已检查

if ($('[name|="py10"]').is(':checked')) {

}
于 2013-05-02T13:45:47.230 回答
0

仅查看 javascript 中的警报,您会遇到语法错误,因为您没有使用尾随关闭它)

尝试以下

$('input:radio').change(function () {
var $this = $(this);
var group1Val =  $('[name|="pyt10"]:checked').val();
var group2Val =  $('[name|="pyt11"]:checked').val();
var group3Val =  $('[name|="pyt12"]:checked').val();   


$('.output').html(
    'Value of radio button clicked: '+ $this.val() + '<br><br>'
    + 'Value of radio button checked for group 1: '
    + group1Val + ' <br>'
    + 'Value of radio button checked for group 2: '
    + group2Val + ' <br>'
    + 'Value of radio button checked for group 3: '
    + group3Val + ' <br>'
);

//alert($('[name|="pyt10"]:checked').val() + " / " + $('[name|="pyt11"]:checked').val() + " / "+
});

这是上面的JSFIDDLE

于 2013-05-02T14:17:55.150 回答