选中MVC视图中的所有复选框

时间:2011-07-19 13:30:30

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-3

  

可能重复:
  Using JavaScript to manipulate HTML input (checkbox) elements via type instead of name.

为什么这不起作用?请帮忙。这是检查MVC视图上所有复选框的代码。

<script type="text/javascript">
    function SetAllCheckBoxes(doc) {
        var c = new Array();
        c = doc.getElementsByTagName('input');
        for (var i = 0; i < c.length; i++) {
            if (c[i].type == 'checkbox') {
                c[i].checked = true;
            }
        }
    }
</script>
<input type="checkbox" name="Test" onclick="SetAllCheckBoxes('PartialViewName')"/>

2 个答案:

答案 0 :(得分:7)

当您的函数似乎将其用作'PartialViewName'对象时,您将document作为字符串传递。

试试这个js:

function SetAllCheckBoxes(obj) {
    var c = new Array();
    c = document.getElementsByTagName('input');
    for (var i = 0; i < c.length; i++) {
        if (c[i].type == 'checkbox') {
            c[i].checked = obj.checked;
        }
    }
}

并按照以下方式连接你的切换器复选框:

<input type="checkbox" name="Test" onclick="SetAllCheckBoxes(this)"/>

工作示例:http://jsfiddle.net/hunter/fA2w5/


使用jQuery非常简单:

<input type="checkbox" id="Test" name="Test" />

$("#Test").click(function(){
    $("input:checkbox:not(#Test)").attr("checked", $(this).is(":checked"));
});

工作示例:http://jsfiddle.net/hunter/fA2w5/3/

答案 1 :(得分:4)

如果可以,请尝试使用jquery selector

$("input:checkbox").attr("checked","checked");

此外,您应该在代码中使用document,而不是doc

 document.getElementsByTagName('input');