jQuery检测单选按钮中的select

时间:2013-05-02 13:36:54

标签: javascript jquery

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

功能非常简单。改变。在我的情况下:

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

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

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

选择后我该怎么做才能写出无线电值?

5 个答案:

答案 0 :(得分:2)

对于您的直接问题,“我需要检测是否已选择所有无线电。”,您可以使用此功能:

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

DEMO: http://jsfiddle.net/VWrzN/1/

答案 1 :(得分:1)

您还可以循环输入:

$('input:radio').change(function(){
        myArray = new Array();
        $('input:radio').each(function(){
            this.checked ? myArray.push(this.value) : myArray.push("notChecked");
        })
        alert(myArray.join("/"))
    })  

答案 2 :(得分:0)

你离我不远。而不是提醒

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

确保已选中

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

}

答案 3 :(得分:0)

另一种方法:如果您使用表单标记包装(或可以包装)您的无线电组,您可以检查是否设置了多少个值:

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

jsfiddle

如果选中该组的一个单选按钮,

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

答案 4 :(得分: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