2012-02-05 60 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

相關問題