如何从 ASP.NET 中的 JavaScript 触发按钮单击事件

Posted

技术标签:

【中文标题】如何从 ASP.NET 中的 JavaScript 触发按钮单击事件【英文标题】:How to fire a button click event from JavaScript in ASP.NET 【发布时间】:2011-11-30 13:30:34 【问题描述】:

如何从 javascript 触发服务器端按钮单击事件?

我试过这样:

document.getElementById("<%= ButtonID.ClientID %>").click();

但是没有用。我该怎么做?

【问题讨论】:

如果对您有帮助,请将答案标记为已接受。 【参考方案1】:

您可以将这一行放在 JavaScript 函数中:

__doPostBack('btnSubmit','OnClick');

或者做这样的事情:

$('#btnSubmit').trigger('click');

【讨论】:

此行是否调用服务器端事件? @Boomer 查看此链接:codethatworkedforme.blogspot.com/2011/08/… @pratapk 你能更新那个评论链接吗(也许添加到答案)我很感兴趣,它已经死了。 你忘了说第二个例子需要 jQuery 并且 ASP Net Forms 从不生成这么好的 id。【参考方案2】:
var clickButton = document.getElementById("<%= btnClearSession.ClientID %>");
clickButton.click();

该解决方案对我有用,但请记住,如果您的 asp 按钮有

可见=“假”

要隐藏应该使用该脚本触发的按钮,您应该使用 &lt;div hidden&gt;&lt;/div&gt; 隐藏它

【讨论】:

真的很感激,上面提到的任何一个都不会在 Visible='False' 下工作。 非常适合我。干杯..:) style="display:none;"直接在按钮上也可以。【参考方案3】:

我使用了下面的 JavaScript 代码,它可以工作...

var clickButton = document.getElementById("<%= btnClearSession.ClientID %>");
clickButton.click();

【讨论】:

它对我不起作用。页面刷新但代码从不运行后面的代码【参考方案4】:

这里发布的解决方案都不适合我,这是我最终解决问题的方法。

// In Server Side code
protected void Page_Load(object sender, EventArgs e)

    Page.GetPostBackEventReference(hiddenButton);


// Javascript
function SetSaved() 
    __doPostBack("<%= hiddenButton.UniqueID %>", "OnClick");


// ASP
 <asp:Button ID="hiddenButton" runat="server" OnClick="btnSaveGroup_Click" Visible="false"/>

【讨论】:

Visible="false" 这就是它不起作用的原因,只需用 隐藏它 回顾一下——我们真正需要做的是使用 Ajax 调用来调用服务器端函数,而不是依赖 WebForms。【参考方案5】:

我在两天内遇到了这个问题,突然我意识到我在提交按钮(在 html 提交按钮中)javascript 方法中使用了这个点击方法(对于 asp 按钮)......

我的意思是->

我有一个 html 提交按钮和一个像这样的 asp 按钮:

<input type="submit" value="Siparişi Gönder" onclick="SendEmail()" />
<asp:Button ID="sendEmailButton" runat="server" Text="Gönder" OnClick="SendToEmail" Visible="True"></asp:Button>

SendToEmail() 是 Default.aspx 中的服务器端方法 SendEmail() 是一个类似这样的 javascript 方法:

<script type="text/javascript" lang="javascript">
   function SendEmail() 
            document.getElementById('<%= sendEmailButton.UniqueID %>').click();
            alert("Your message is sending...");
        
</script>

还有这个“document.getElementById('').click();”方法不适用于 Crome。它在 IE 和 Firefox 中运行。

然后我尝试了很多方法来在 Crome 中执行“SendToEmail()”方法。

然后我突然改变了 html 提交按钮 --> 只是这样的 html 按钮,现在它正在工作:

&lt;input type="button" value="Siparişi Gönder" onclick="SendEmail()" /&gt;

祝你有美好的一天......

【讨论】:

【参考方案6】:

我可以让事情这样运作:

在由 html 按钮执行的 javascript 联结内:

document.getElementById("&lt;%= Button2.ClientID %&gt;").click();

div 内的 ASP 按钮:

<div id="submitBtn" style="display: none;">
   <asp:Button ID="Button2" runat="server" Text="Submit" ValidationGroup="AllValidators" OnClick="Button2_Click" />
</div>

一切都从 .cs 文件运行,除了下面的代码不执行。没有消息框并重定向到同一页面(刷新所有框):

 int count = cmd.ExecuteNonQuery();
 if (count > 0)
 
   cmd2.CommandText = insertSuperRoster;
   cmd2.Connection = con;
   cmd2.ExecuteNonQuery();
   string url = "VaccineRefusal.aspx";
   ClientScript.RegisterStartupScript(this.GetType(), "callfunction", "alert('Data Inserted Successfully!');window.location.href = '" + url + "';", true);
  

任何想法为什么这些行不会执行?

【讨论】:

【参考方案7】:

您可以从 JavaScript 代码中填充隐藏字段,并从 JavaScript 进行显式回发。然后从服务器端检查该隐藏字段并执行任何必要的操作。

【讨论】:

【参考方案8】:
document.FormName.btnSubmit.click(); 

为我工作。享受吧。

【讨论】:

【参考方案9】:
$("#"+document.getElementById("<%= ButtonID.ClientID %>")).trigger("click");

【讨论】:

以上是关于如何从 ASP.NET 中的 JavaScript 触发按钮单击事件的主要内容,如果未能解决你的问题,请参考以下文章

如何从用 asp.net 中的 scriptmanager.registerclientscript 编写的 javascript 确认框返回值?

如何使用asp.net MVC中的href从javascript在新窗口中打开打开的窗口

如何从 javascript 文件中获取函数的值到 ASP.NET MVC 视图?

从 ASP.NET Core Blazor 中的 .NET 方法调用 JavaScript 函数

如何从 Asp.Net Code Behind 调用 JavaScript 函数?

从asp.net mvc中的switch case调用javascript函数