0

我有 2name个输入(group1group2)。给定其中一个,如何获取复选框的索引name

<input type="radio" name="group1" value="Milk"> Milk<br>
<input type="radio" name="group1" value="Butter" checked> Butter<br>
<input type="radio" name="group1" value="Cheese"> Cheese
<hr>
<input type="radio" name="group2" value="Water"> Water<br>
<input type="radio" name="group2" value="Beer"> Beer<br>
<input type="radio" name="group2" value="Wine" checked> 

例如,如果我选中group2("Beer") 中的第二个单选框,它将返回 2。

编辑:基于反馈的演示;还是行不通。

4

5 回答 5

2

您需要为每个组找到选中的元素,然后找到它的索引。确保在index()函数内部进行过滤,否则它将给出所有兄弟姐妹之间的索引,而不仅仅是该组的输入。

var group1Index = $('input[name="group1"]:checked').index('input[name="group1"]');
var group2Index = $('input[name="group2"]:checked').index('input[name="group2"]');

编辑注意index()函数是 0 索引的。

于 2013-04-16T16:06:45.717 回答
1

您可以使用 javascript 来遍历按钮,并返回被选中的那个:

function getRadioValue(RadioName)
{
var colRadio = document.getElementsByName(RadioName);
for (var i = 0; i < colRadio.length; i++)
{
if (colRadio[i].checked)
{
return colRadio[i].value;
}
return null;
}

vValue = getRadioValue("group1");
于 2013-04-16T16:01:24.857 回答
1

返回名为“group1”的已检查输入元素的基于 0 的索引

$('input[name="group1"]:checked').index()
于 2013-04-16T16:03:54.937 回答
0

我不确定您要做什么。几乎所有其他答案都是关于index(),但在你的情况下,第二个单选按钮 index() 不会像你想要的那样返回 2 ,它会返回 1因为索引是基于 0 的。

这个 jsfiddle展示了如何获取特定组中选定输入的索引/值/分数/编号,以及如何汇总所有选定单选按钮的值。

<form id="myForm">
     <h3>First Group</h3>

    <input type="radio" name="group1" value="the-first" data-points="0">First</input>
    <input type="radio" name="group1" value="the-second" data-points="20">Second</input>
    <input type="radio" name="group1" value="the-third" data-points="300">Third</input>
    <hr>
    <h3>Second Group</h3>
    <input type="radio" name="group2" value="four" data-points="4">4</input>
    <input type="radio" name="group2" value="five" data-points="5">5</input>
    <input type="radio" name="group2" value="six" data-points="6">6</input>
    <hr>
    <input type="submit" value="Submit" />
</form>

和 javascript/jQuery(出于演示目的使用 alert 而不是 console.log):

$(function () {
    $("#myForm").submit(function () {
        //This gets the checked input in group1
        var g1 = $("input[name='group1']:checked");
        alert("Group 1 \n Selected Value: " + g1.val() + " \n Selected Index: " + g1.index() + "\n Points: " + g1.data('points'));

        var totalPoints = 0;

        //This loops through all checked inputs
        $.each($("input:checked"), function () {
            totalPoints += $(this).data("points");
        });

        alert("Total points from all groups: " + totalPoints);

        return false; //remove if you want to submit
    });
});
于 2013-04-16T16:05:38.953 回答
0

您可以使用$.index()

  $('input[type=checkbox]').click(function(){
    var idx = $(this).index();
    // do whatever with the index
  });

看到它在行动

在上面的代码(和给出的示例)中,将复选框分组在一个仅包含它们的容器中是很重要的,因为它index返回一个数字,表示元素关于其容器的索引。

于 2013-04-16T16:08:20.060 回答