2009-02-14 242 views
1

我有一個複選框的小列表(見下文),我注意到我可以使用type =「reset」的輸入元素,它將取消選中所有的框。 我知道使用輸入會比鏈接的「onClick」事件更好,因爲我不會依賴於JavaScript,但對於這個例子,我都有。選擇所有的HTML複選框

<a onclick="javascript:document.myList.reset();" href="#">select none</a> | 
<a href="#">select all</a> 
<form name="myList"> 
    <input type="checkbox" name="item1"/>Item 1<br/> 
    <input type="checkbox" name="item2"/>Item 2<br/> 
    <input type="reset" name="none"/> 
    <input type="submit" name="submit"/> 
</form> 

實現「全選」的最佳方法是什麼? 我可能需要編寫一個JavaScript函數,它可以通過type =「checkbox」形式的「myList」形式的所有「輸入」元素進行循環,並將該值設置爲「0」或其他內容。 另外,做這件事的正確的「跨瀏覽器」方式是什麼?

我認爲沒有像重置這樣做的HTML表單方式嗎? (我找不到一個。)

+0

只是爲了澄清,HTML復位將改變一切回到它的方式。如果您的複選框在呈現時被選中,則重置按鈕將使其被選中。 – 2009-02-14 00:41:26

回答

1

呀,你用JS。你

for(var ix = 0; ix < document.myList.elements.count; ix++) 
    if(document.myList.elements[ix].type == 'checkbox') 
     document.myList.elements[ix].checked = true; 
+0

我認爲它是.checked = true; – 2009-02-14 00:45:27

0

正確,沒有HTML方式。你必須使用JavaScript或其他語言來實現它。

10

重置將其設置爲其初始狀態。這意味着如果您的所有複選框都設置爲先檢查,然後更改按重置將使他們回到該狀態。

我會建議使用jQuery用於在同一時間進行更改許多元素:

$("form[name='myList'] :checkbox").attr("checked", true); 

或純JavaScript:

for(var i in document.myList.childNodes) 
    if(document.myList.childNodes[i].type == "checkbox") 
     document.myList.childNodes[i].checked = true;