在MVC视图中勾选所有复选框

3

可能是重复问题:
使用JavaScript通过类型而不是名称操作HTML输入(复选框)元素。

为什么这个代码不起作用?请帮忙。这是一个用于检查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个回答

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/


把以下與編程相關的內容從英文翻譯為中文。僅返回翻譯文本。 - Tr1stan
抱歉,这个还是不行...我在onclick事件中是否仍然传递了部分视图名称?<input type="checkbox" name="Test" onclick="SetAllCheckBoxes('PartialViewName')"/> - ZVenue
请查看我的更新,应该可以使用js或jQuery。请查看我的两个示例。 - hunter

4

如果可以的话,请尝试使用jQuery选择器

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

此外,在您的代码中应该使用document而不是doc
 document.getElementsByTagName('input');

这行代码应该放在哪里? - ZVenue
@ZVenue 这行代码选择所有类型为 input:checkbox 的输入框,并将 checked 属性添加到它们中的所有输入框。 - VMAtm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接