2012-02-05 63 views
2

我想检查多个单选按钮组的第一个元素。检查所有没有Jquery的单选按钮

我使用Firebug,这就是为什么我不想要的,是的,我知道有firequery,但像他们这样做是在旧时代:)

任何帮助yould是巨大的,必须有一个办法,thx提前。

回答

4

循环向后上方document.getElementsByTagName('input')并设置checkedtrue如果type等于"radio"

如果您尝试检查同一组中的多个按钮,则最后一个按钮将保持不变。
因此,向后循环将最终检查每个组中的第一个选项。

+0

我该怎么做?向后循环的声音完全像我所需要的 – Harry 2012-02-05 19:51:23

+0

'for(var i = arr.length - 1; i> = 0; i - )' – SLaks 2012-02-05 19:53:39

+0

这似乎是错误的...然而,它非常简单,它应该工作。 :-) – 2012-02-05 19:55:49

1

更新

感觉有点傻在这里,你你使用Firebug,因此火狐,所以我们有querySelector可用。因此检查在任何给定组中的第一个单选按钮被一个班轮:

document.querySelector('input[type="radio"][name="theGroupName"]').checked = true; 

Live example

querySelector返回第一匹配元件,和因此上述将与type="radio"并返回第一input元件name="theGroupName"。然后我们将其checked设置为true

想当然地认为不会做的第一所有群体,但它给你更多的控制权,是(再次)一个班轮  —方便Firebug的。


原来的答复

您可以使用getElementsByTagName得到的文档顺序的所有input元素。然后循环遍历它们,只处理type="radio"并记住你最后的name;为每个名称的第一个标记checked = true

例如为:

var inputs = document.getElementsByTagName('input'); 
var lastName, index, input; 
for (index = 0; index < inputs.length; ++index) { 
    input = inputs.item(index); 
    if (input.type.toLowerCase() === "radio") { 
     if (input.name !== lastName) { 
      lastName = input.name; 
      input.checked = true; 
     } 
    } 
} 

Live example

如果要限制某些容器,就可以使用element version of getElementsByTagName

+0

只有组群连续时才有效。 – SLaks 2012-02-05 19:53:59

+0

请注意,这假设所有单选按钮选项都将在源代码中相邻(没有中间单选按钮)。 – ErikE 2012-02-05 19:54:10

+0

@SLaks:True ... – 2012-02-05 19:54:59

相关问题