在asp.net GridView中使用按钮第二次触发Jquery点击事件?

时间:2009-11-06 20:59:42

标签: asp.net jquery

我有一个包含几列的GridView。其中一列是按钮。它位于模板字段中,如下所示:

<asp:TemplateField>
<ItemTemplate>
    <asp:Button ID="btnApply" Text="View Details" CssClass="viewdetails" runat="server"/>
</ItemTemplate>
</asp:TemplateField>

我的JQuery代码如下:

<script type="text/javascript">
    $(document).ready(function() {
        $('.viewall, .viewdetails').click(function() {
          alert('Must be a member to view all');
        });
    });
</script>

当我第一次访问该页面并单击查看详细信息按钮时,会弹出警告,但在此之后,如果我单击任何其他视图详细信息按钮,则在刷新页面之前不会弹出该警告。 “全部查看”按钮始终显示该消息,因为单击该消息时,页面将刷新。

几个笔记。 View Details按钮位于asp.net GridView中,GridView位于asp.net UpdatePanel内。

此外,由于view all和viewdetails调用相同的消息,有没有办法将它们组合成一个click事件,例如$('。viewall .viewdetails')。click(....... < / p>

如果我删除更新面板,它可以工作,但每次我单击查看全部或查看详细信息,我都会闪烁,所以我添加了一个返回false;这会阻止闪烁,但是,这会阻止用户在确实登录时进入“成员”页面。如果我将返回false关闭并且他们已登录,则消息仍会弹出,然后将其带到成员页面。这显然不应该发生,但我不知道如何处理它。基本上事件应该是:

如果用户未登录并单击“查看全部”或“查看详细信息”按钮,则会显示一条消息,说明他们必须登录或成为会员。

如果用户已登录并单击“查看全部”或“查看详细信息”按钮,则将其重定向到“成员”页面。 “查看全部”和“查看详细信息”都有服务器端单击事件,如果他们已登录,则会对成员页面执行Response.Redirect。

1 个答案:

答案 0 :(得分:2)

在这些情况下,您需要取消click事件......

    $(document).ready(function() {
        $('.viewall').click(function(e) {
          alert('Must be a member to view all');
          e.preventDefault();
        });
        $('.viewdetails').click(function(e) {
          alert('Must be a member to view all');
          e.preventDefault();
        });
    });

您可以使用逗号分隔多个选择器...

    $(".selector1, .selector2").click(function() { ... });