未处理的异常 - 0x800a1391 - JavaScript运行时错误:'SelectAllCheckBoxes'未定义

时间:2013-07-08 17:15:32

标签: c# javascript jquery asp.net

我是网络开发的新手,所以我还在学习基础知识。

我只想在我的ASP .NET页面中添加一些jQuery。

在标题中,我引用了我需要的内容:

<head id="Head1" runat="server">
        <link href="Content/Site.css" rel="stylesheet" type="text/css"/>
        <script type="text/javascript" src="Scripts/jquery-2.0.2.js" ></script>
        <script type="text/javascript" src="~/HeaderCheckBoxSelections.js"></script>
</head>

这就是~/HeaderCheckBoxSelections.js的样子:

function SelectAllCheckBoxes(cbSelect) {
    $('#<%=gvShows.ClientID%>').find("input:checkbox").each(function() {
        if (this != cbSelect) {
            this.checked = cbSelect.checked;
        }
    });
}

事件由此触发:

<HeaderTemplate>
     <asp:CheckBox ID="cbSelectAll" runat="server" onclick="javascript:SelectAllCheckBoxes(this);"/>
</HeaderTemplate>

但是当点击复选框时,它会显示:

未处理的异常......

0x800a1391 - JavaScript runtime error: 'SelectAllCheckBoxes' is undefined.

我在这里遗漏了什么吗?我没有正确引用jQuery吗?

2 个答案:

答案 0 :(得分:3)

中jquery选择器中的数据绑定
  

$( '#&LT;%= grdOperation.ClientID%GT;')

无法在单独的javascript文件中运行。该数据绑定必须在aspx标记上才能正确呈现。

您可以将数据绑定存储到您的aspx中,方法是将其存储到变量中,例如

<head id="Head1" runat="server">
    <link href="Content/Site.css" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" src="Scripts/jquery-2.0.2.js" ></script>
    <script type="text/javascript" src="~/HeaderCheckBoxSelections.js"></script>
    <script type="text/javascript">
        var grdOperationId = '<%=grdOperation.ClientID%>';
    </script>
</head>

然后在你的javascript中通过变量引用它。

或者您可以使用“id ends with”选择器在js代码中选择它,只要页面上只有一个grdOperation即可。如:

function SelectAllCheckBoxes(cbSelect) {
    $('[id$=grdOperation]').find("input:checkbox").each(function() {
        if (this != cbSelect) {
            this.checked = cbSelect.checked;
        }
    });
}

答案 1 :(得分:0)

试试这个:

<HeaderTemplate>
    <asp:CheckBox ID="cbSelectAll" runat="server" onclick="SelectAllCheckBoxes(this);"/>
</HeaderTemplate>

ASP.NET Checkbox控件实际上没有OnClick attribute,也没有OnClientClick attribute;因此ASP.NET只是像自定义属性一样传递属性,因为浏览器知道如何处理onclick属性,它会尝试执行逻辑。

如果失败,那么正确加载实际.js文件就会出现问题。您可以通过Chrome Developer ToolsFirebugIE F12 Tools验证.js文件实际上是否在内存中?

以下是Chrome Developer Tools的屏幕截图Scripts,在Network标签中过滤Microsoft's web site后的{{1}}:

enter image description here