如何通过JQuery或Javascript以编程方式调用服务器单击

How do you programmatically Invoke a Server Click via JQuery or Javascript

本文关键字:方式 调用 服务器 单击 编程 何通过 JQuery Javascript      更新时间:2023-09-26

我在用户控件上有一个ASP服务器按钮,它可以触发服务器端的OnClick事件,该事件运行良好。但是我需要使用JavaScript或JQuery来触发OnClick事件。

我尝试了以下方法,但都没有像用户实际点击按钮一样模拟结果:

document.getElementById('<%=btnRefresh.ClientID%>').click();
$('#<%=btnRefresh.ClientID %>').click();

我怀疑这可能是因为它模拟的是OnClientClick事件,而不是服务器;但我发现有人声称这对成功触发服务器端点击事件的其他人有效,但这对我无效。

有其他方法可以完成任务吗?


响应AJAX的建议。我尝试过这种方法,但成功完成这项任务需要PostBack。实际点击按钮会产生所需的结果,我可以使用AJAX触发事件,但如果没有PostBack元素,它就会失败。

我有一个ASP服务器按钮

所以你有类似的东西

<asp:Button ID="btnRefresh" Text="I'm a button" OnClick="btnRefresh_Click" />

为了执行客户端调用,在服务器调用之前,您只需要将函数或内联代码附加到OnClientClick属性:

<asp:Button ID="btnRefresh" 
          Text="I'm a button" 
       OnClick="btnRefresh_Click"
 OnClientClick="btnRefreshClick" />

并且在您的javascript中简单地添加该方法

function btnRefreshClick() {
    // your stuff goes here...
    return true; // returning true (or nothing) will fire the server side click
                 // returning false will not fire it
}

添加:误解了这个问题,所以你想激发一个javascript事件,它会自动在按钮上执行click。。。

我刚刚测试了这个代码:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br/>
        <a href="#" class="a">fire button click event</a>
    </div>
    </form>
    <script>
        $(".a").click(function() {
            //var elm = $("#" + "<%= Button1.ClientID %>"); elm.click(); // with jQuery
            var elm = document.getElementById('<%=Button1.ClientID%>');
            elm.click();
        });
    </script>
</body>

我可以正确地按下按钮,无论是否使用jQuery:

正在执行的放映:http://screencast.com/t/m4ohA9uW