我想使用单选按钮构建表单,我需要检测是否已选择所有无线电。
功能非常简单。改变。在我的情况下:
$('input:radio').change(function() {
alert($('[name|="pyt10"]:checked').val() + " / " + $('[name|="pyt11"]:checked').val() + " / "+
})
但这是一个小问题 - 我有3组无线电。当我选择第一个收音机时,警告显示我,所有字段都是未定义的,在第二个选择第一个收音机有值后,但第二个仍未定义,依此类推。
这意味着,我的警报会在更改之前显示无线电值,而不是之后。
选择后我该怎么做才能写出无线电值?
答案 0 :(得分:2)
对于您的直接问题,“我需要检测是否已选择所有无线电。”,您可以使用此功能:
var radios = $('input:radio').on("click", function () {
alert(radios.length === radios.filter(":checked").length);
});
答案 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);
});
如果选中该组的一个单选按钮, 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。