jQuery:触发 <asp:LinkButton> 的单击事件

11
我需要触发一个 <asp:LinkButton> 的点击事件。 示例1: 以下代码可以正常工作:
<asp:Button ID="myBtn" runat="server" />

$("#myBtn").trigger("click");

示例2

现在使用LinkButton进行相同操作无法工作:

<asp:LinkButton ID="myBtn" runat="server" />

$("#myBtn").trigger("click");

我需要触发一个asp:LinkButton的点击事件。

5个回答

23

@Spudley 我和原帖提出了同样的问题,我的网络大师朋友提到eval()也不好,但其他答案实际上对我没有用。像这样的东西将会起作用,以模拟LinkButton添加的href javascript所做的eval操作:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("#<%= myBtn.ClientID %>", "", true, "SearchValidation", "", false, true)); 使用正确的验证组(以及其他内容)。 - Gloopy
1
不应在linkbutton中使用eval(),否则将丢失视图状态数据。我曾在一个项目中使用过它,直到我发现这个问题时,它给了我很大的困扰。为了保留postback时的视图状态,不能使用eval。 - Alexandre Fernandes

5
将一个 CssClass 属性添加到你的 LinkButton 中,并将其用作选择器。
其他答案建议使用 ASP.NET 的 ClientID 来获取渲染的 LinkButton 的 ID,这是可以的,但这意味着你必须在页面内嵌入脚本,并且该脚本仅适用于此 1 个按钮。
使用类意味着您可以有多个元素触发相同的事件,而且不需要使用内联服务器端代码即可使其起作用。
<asp:LinkButton ID="myBtn" runat="server" CssClass="myLink" />

$(".myLink").trigger("click");

这怎么可能是被接受的答案?它适用于按钮,而不适用于链接按钮。 - edc65

1

你给了两个相同的ID,所以它们都无法工作。尝试更改它。

如果你正在使用母版页,请按照下面的方式使用:

  <script type="text/javascript">
          $(document).ready(function () {
              $("#<%=myBtn.ClientID%>").click(function () {
              $('#<%=hyperlinkID.ClientID%>').trigger('click');
          });
  </script>

如果您不使用主页面,则请使用以下代码:
<script type="text/javascript">
         $(document).ready(function () {
            $("#myBtn").click(function () {
             $('#hyperlinkID').trigger('click');
         });
 </script>

1

永远不要使用eval(),因为它存在安全漏洞和易受攻击。最好的方法是使用本地js点击事件,就像这样。

$('[selector]')[0].click();

在你的情况下
$("#myLink")[0].click();

0
请使用这行代码

$("#<%= myBtn.ClientID %>").trigger("click");

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