2013-03-07 54 views
1

希望有人可以協助使用以下HTML關於僅檢索爲該特定的無線電組選擇哪個無線電組選項 。如何在使用。每個功能時返回選定的無線電組值

爲了理解我希望如何工作,我基本上會讓用戶在 網頁上輸入所需的值,同時選擇可用的radiogroup選項 - 這種情況是/否,但是當我們按下一個按鈕時,我將會想要掃描頁面,然後我會向他顯示他們選擇哪個radiogroup 選項。

因此,基於以下HTML代碼,如果對於名爲「已婚」的radiogroup,他們選擇「YES」,並且爲名爲「children」的radiogroup選擇「No」,那麼我想現在,屏幕:

YES NO

,而不是

YES YES NO NO

我正在使用.each函數來掃描頁面上的所有元素,並且查看是否爲「無線電」 ,但不幸的是我得到了重複的響應,這是我不想要的。

任何人都可以協助如何掃描頁面,並且只爲每個radiogroups返回YES和NO嗎?

謝謝。

<fieldset class="radio_group" tabindex="-1" id="MARRIED_RG"> 
<table class="radiogroup" datatable="0" role="presentation" summary=""> 
<tbody><tr> 
<td nowrap="nowrap"> 
<input type="radio" class="tooltip" value="YES" name="married" id="MARRIED_RG_0"><label for="MARRIED_RG_0">Yes</label></td><td nowrap="nowrap"> 
<input type="radio" class="tooltip" value="NO" name="married" id="MARRIED_RG_1"><label for="MARRIED_RG_1">No</label></td></tr></tbody></table> 
</fieldset> 


<fieldset class="radio_group" tabindex="-1" id="CHILDREN_RG"> 
<table class="radiogroup" datatable="0" role="presentation" summary=""> 
<tbody><tr> 
<td nowrap="nowrap"> 
<input type="radio" class="tooltip" value="YES" name="children" id="CHILDREN_RG_0"><label for="CHILDREN_RG_0">Yes</label></td><td nowrap="nowrap"> 
<input type="radio" class="tooltip" value="NO" name="children" id="CHILDREN_RG_1"><label for="CHILDREN_RG_1">No</label></td></tr></tbody></table> 
</fieldset> 

基於上述,我基本上需要一種不重複無線電組結果的方法 - 需要不同的值。

我的代碼是類似如下:

$(':radio').each(function() { // loop through each radio button 
     nam = $(this).attr('name'); // get the name of its set 
     if ($(':radio[name="'+nam+'"]:checked').length > 0) { 
     // see if any button in the set is checked 
      alert(nam); 
     } 
    }); 

因此,基於使用上述HTML,我得到了正確的價值觀,而是因爲我使用。每個函數,它返回的每一行的代碼在RadioGroup中,即:

MARRIED_RG_0 YES 
MARRIED_RG_1 YES 
CHILDREN_RG_0 NO 
CHILDREN_RG_1 NO 

我只想要回:

MARRIED_RG_0 YES 
CHILDREN_RG_1 NO 

希望這前充足的人可以協助解決我遇到的問題。

再次感謝。

+0

請出示你現在的代碼。沒有看到它有點難以說出什麼問題。 – JJJ 2013-03-07 07:42:30

+0

道歉@Juhana - 我將發佈我後來的內容。 – tonyf 2013-03-07 09:15:11

+0

@Juhana - 請參閱示例代碼的更新線程。謝謝。 – tonyf 2013-03-07 11:11:16

回答

1

有可能是一個更聰明的方式來做到這一點,但你可以先收集的單選按鈕組的列表,然後通過該列表,而不是每一個單選按鈕迭代。

var sets = []; 

// first get all unique sets 
$(':radio').each(function() { 
    var name = $(this).attr('name'); 
    if ($.inArray(name, sets) === -1) { 
     sets.push(name); 
    } 
}); 

// then loop through the sets 
$.each(sets, function (index, set) { 
    if ($(':radio[name="' + set + '"]:checked').length > 0) { 
     // see if any button in the set is checked 
     alert(set); 
    } 
}); 

演示:http://jsfiddle.net/SF4qj/

+0

感謝@Juhana,但是每個radiogroup也可以在末尾沒有_0或_1的情況下返回ID,因此對於MARRIED,ID將僅爲:MARRIED_RG對於兒童來說,它只是:CHILDREN_RG? – tonyf 2013-03-07 12:20:59

+0

是的,'.parents()。find('fieldset').attr('id')' – JJJ 2013-03-07 12:35:32

+0

感謝那Juhana--一切都好。 – tonyf 2013-03-07 13:06:03

1

如果你可以使用任何比。每()不同,你可以嘗試這樣的事:

$("input:radio[name='married']:checked").val() 
$("input:radio[name='children']:checked").val() 

編輯問題澄清後: 嘗試$(this).is(":checked"),而不是$(':radio[name="'+nam+'"]:checked').length > 0

$('input:radio').each(function() { // loop through each radio button 
    nam = $(this).attr('name'); // get the name of its set 
    if ($(this).is(":checked")) { 
     alert(nam + ": " + $(this).val()); 
    } 
}); 
+0

謝謝,但我必須使用.each,因爲我需要掃描頁面上的所有字段並獲取它們的值。這些項目可以是文本框,收音機組,複選框等。 – tonyf 2013-03-07 08:21:01

相關問題