2013-05-02 279 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