2013-05-02 151 views
0

我想用单选按钮构建窗体,我需要检测是否所有无线电都选择了蜜蜂。jQuery detect在单选按钮中选择

这是相当简单的功能.change。在我的情况:

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

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

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

选择后应该如何写电台值?

+0

由于您正在使用':checked',因此只会在检查时按名称选择元素。你可能想要把它关掉。 – Ian 2013-05-02 13:41:04

+0

我想检查值,但什么是问题 - 电台没有被选中 - 默认值“未定义”,我选择它的值改变为“1”,但警报仍然显示“未定义”,第二次选择后显示“1”...警报值落后一步,它显示更改前的值... – Ilkar 2013-05-02 13:49:55

回答

2

为了您的眼前的问题,“在这里我需要的,如果所有无线电已蜜蜂选择来检测”,您可以使用此:

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

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

0

你并不远关闭。而不是提醒

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

确保它的检查

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

} 
1

你也可以通过输入回路:

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

另一种方法:如果你有包裹(或可换)电台带有表格标签的组可以检查是否有与组一样多的值:

$('#radios').on('change', ':radio', function() { 
    var form = $(this).closest('form'), 
     full = form.serializeArray().length == 2; 
    console.log(full); 
}); 
如果该组中的一个无线电按钮被选中

jsfiddle

form.serializeArray()将返回与每个无线电设备组的值的数组。

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