3

我是 Web 开发的新手,所以我仍在学习基础知识。

我只想在我的 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 吗?

4

2 回答 2

3

jquery 选择器中的数据绑定

$('#<%=grdOperation.ClientID%>')

不能在单独的 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 中通过变量引用它。

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

function SelectAllCheckBoxes(cbSelect) {
    $('[id$=grdOperation]').find("input:checkbox").each(function() {
        if (this != cbSelect) {
            this.checked = cbSelect.checked;
        }
    });
}
于 2013-07-08T17:33:20.577 回答
0

尝试这个:

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

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

如果失败,则说明.js正确加载的实际文件存在问题。您可以使用 验证Chrome Developer ToolsFirebug或者IE F12 Tools.js文件实际上在内存中吗?

这是在访问Microsoft 网站Chrome Developer Tools时仅过滤掉选项卡中的Scripts,的屏幕截图:Network

在此处输入图像描述

于 2013-07-08T17:22:52.167 回答