按输入名称获取已检查输入的索引

时间:2013-04-16 15:59:27

标签: jquery

我有2 name个输入(group1group2)。如何获得其中一个name s?

的复选框的索引
<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(“啤酒”)中的第二个单选框,它将返回2.

根据反馈修改:demo;仍然没有工作。

5 个答案:

答案 0 :(得分:2)

您需要找到每个组的已检查元素,然后找到它的索引。确保在index()函数内部进行过滤,否则它将在所有兄弟中提供索引,而不仅仅是该组的输入。

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

编辑请注意,index()功能为0索引。

答案 1 :(得分: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");

答案 2 :(得分:1)

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

$('input[name="group1"]:checked').index()

答案 3 :(得分:0)

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

This 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
    });
});

答案 4 :(得分:0)

您可以使用$.index()

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

See it in action

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