使用.each函数时如何返回选定的radiogroup值?

问题描述 投票:1回答:2

在下面的HTML中,我想只检索为该特定放射性组选择的哪个放射性组选项。

以下是我希望这个工作的方式,我基本上会让用户在网页上输入所需的值,同时选择他们可用的radiogroup选项 - 这种情况是/否,但我想要当他们按下按钮时扫描页面,然后只显示他们选择了哪些放射性组选项。

因此,基于以下HTML代码,如果对于名为“已婚”的无线电组,他们选择“是”,对于名为“儿童”的无线电组,他们选择“否”,那么我现在想要警告屏幕:

YES
NO

只是而不是

YES
YES
NO
NO

我正在使用.each函数扫描页面上的所有元素,并检查类型是否为“radio”,但不幸的是我得到了重复的响应,这是我不想要的。

如何扫描页面,每个放射组只返回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,我得到了正确的值,但因为我使用.each函数,它返回的是无线电组的每一行,即:

MARRIED_RG_0    YES
MARRIED_RG_1    YES
CHILDREN_RG_0   NO
CHILDREN_RG_1   NO

我只想回来:

MARRIED_RG_0    YES
CHILDREN_RG_1   NO
jquery oracle-apex
2个回答
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);
    }
});

但是:ぁzxswい


1
投票

如果你可以使用与.each()不同的东西,你可以试试这样的东西:

http://jsfiddle.net/SF4qj/

问题澄清后编辑:尝试$("input:radio[name='married']:checked").val() $("input:radio[name='children']:checked").val() 而不是$(this).is(":checked")

$(':radio[name="'+nam+'"]:checked').length > 0
© www.soinside.com 2019 - 2024. All rights reserved.