通过调用.click()来启动asp:Button的OnClick函数

Firing the OnClick function of an asp:Button from calling .click()

本文关键字:asp Button 函数 OnClick 启动 调用 click      更新时间:2023-09-26

我想从Javascript函数调用一些服务器端代码。

我有这个按钮:

<asp:Button ID="quickAdd" runat="server" text = "Quick add" OnClick="QuickAdd" />

如果我点击它,C#函数QuickAdd将按预期调用

我在一个javascript函数中有这个命令:

document.getElementById("quickAdd").click();

并且该功能的执行不起任何作用。没有错误,我假设它只是点击按钮,但这不会触发QuickAddC#函数所需的事件。

我该如何解决这个问题?

而不是

document.getElementById("quickAdd").click();

使用

document.getElementById('<%=quickAddClientID%>').click();

其中quickAdd实际上是按钮变量的代码名。这只是因为您将无法引用该html项目,因为在运行时ID将因runat="server"而更改-因此这只是部分答案

具体来说,您应该尝试.onclick()方法,但这里给出了更彻底的处理方法:

是否可以触发链接';s(或任何元素';s)通过JavaScript点击事件?

您有两种方法。

  • 您可以忘记QuickAdd服务器事件,并进行ajax调用(请参阅此处的操作方法)
  • 您可以使用ASP.NET AJAX调用执行Post,只需将鼠标悬停在链接中,即可看到将要执行的javascript,复制并使用该方法而不是.click()

.click()不是Javascript中的原生函数(它在jQuery中)。因此,当您调用.click()时,不会发生任何事情,因为.click)没有指定。

如果您想获得对象的onclick方法,请使用以下代码:

 var func = document.getElementById("quickAdd").onclick;

此时,func是#quickAdd元素的onclick函数。因此,在这一点上,您可以调用:

func();

document.getElementById("quickAdd").onclick();

其中任何一个都将获取并执行您的onclick事件。

如果这没有帮助,请在Firefox中调出您的页面,并使用Firebug控制台执行您的javascript(Firebug是一个您可以安装的Firefox插件,它可以让您访问)。

 $(document).ready(function () {
        $('#btnCancel').click(function (e) {
            e.preventDefault();
            $("<div><span><b>Are you sure you want to cancel this order?</b></span></div>").dialog({
                modal: true,
                draggable: false,
                resizable: false,
                width: 430,
                height: 150,
                buttons: {
                    "No": function () {
                        $(this).dialog("destroy");
                    },
                    "Yes": function () {
                        $("#btnCancel").unbind();
                        $(this).dialog("destroy");
                        document.getElementById('<%= btnCancel.ClientID %>').click();
                    }
                }
            });
        });
    });

然后在机身

<asp:button id="btnCancel" runat="server" cssclass="button_major" text="Cancel" style="float: right"
                    onclick="btnCancel_ClickEvent" clientidmode="Static" />