这个asp.net webusercontrol代码有什么问题吗?

时间:2011-04-03 10:58:25

标签: javascript jquery asp.net

我已经更新了我的代码,但它仍无法正常工作......

运行我的asp.net网页并点击按钮后,每次都会出现以下错误...

Microsoft JScript运行时错误:抛出异常但未捕获

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl.ascx.vb" Inherits="WebUserControl" %>
<script src="./scripts/jquery-1.5.1.js" type="text/javascript"></script>
    <script type="text/javascript">
       $(document).ready(function() {
   $('#chkAll').click(
    function() {
        $("INPUT[type='button']").attr('click', $('#chkAll').is(':click'));
    });
});   
     </script>
    <div>
    <asp:Panel ID="Panel1" runat="server">

    <asp:CheckBox ID="CheckBox1" runat="server" />
    <asp:CheckBox ID="CheckBox2" runat="server" />
    <asp:CheckBox ID="CheckBox3" runat="server" />
        <br />
        <br />
        <br />
        <input id="chkAll" type="button" value="button" />
</asp:Panel>
    </div>

Microsoft JScript运行时错误:抛出异常但未捕获

2 个答案:

答案 0 :(得分:3)

您不需要#&lt;%= chkAll.ClientID%&gt;对于没有runat =“server”的控件 只需使用ID。

答案 1 :(得分:0)

看起来你正试图完成所展示的here。从那个演示:

$(document).ready(function()
{
  $("#paradigm_all").click(function()               
  {
    var checked_status = this.checked;
    $("input[@name=paradigm]").each(function()
    {
      this.checked = checked_status;
    });
  });                   
});

请注意这与您的代码正在执行的操作之间的主要区别。您正在选择button类型的输入,并尝试更改名为click的属性。那......不会奏效。此演示改为按名称选择checkbox类型的一些输入并设置其checked状态。此外,它是通过使用checkbox而不是button(这似乎是您明确的意图)来实现的。

您可以阅读jQuery选择器here。您可以使用很多选择元素。在演示中,元素具有相同的name属性,可以这样选择。您应该能够在.NET服务器控件中设置name属性,以便在客户端代码上轻松使用。如果没有name属性,您也可以选择Paneldiv等子元素。您可能需要在其中提供一些名称或ID,以便轻松实现自己。

编辑:根据您的评论,您可以稍微更改一下逻辑。您仍然像以前一样绑定到click事件。但是,您将无法使用元素拥有checked状态,因为按钮没有。像这样的东西,例如:

$(document).ready(function()
{
  $("#paradigm_all").click(function()                
  {
    $(":checkbox").each(function()
    {
      this.checked = true;
    });
  });                    
});

这会修改前一个示例的逻辑(假设您已将目标复选框更改为标记中的按钮)。主要区别是:

  • 其他复选框的选择器现在选择页面上的所有复选框。您可能希望定位一个比这更具体的选择器,但它适用于演示目的。
  • 该按钮仅设置要选中的所有复选框。在此示例中,再次单击该按钮不会取消选中它们。要做到这一点,你必须定义更多的逻辑。例如,如果选中其中一些并单击按钮,它们是全部检查还是全部取消检查?或者他们切换?如果用户使用该按钮检查所有然后取消检查,该怎么办?再次单击该按钮后,是否重新检查该按钮或其余部分是否未经检查?许多用户体验问题:)