2009-02-14 132 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;