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

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

我试过这样:

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

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

【问题讨论】:

  • 如果对您有帮助,请将答案标记为已接受。

标签: javascript c# asp.net


【解决方案1】:

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

__doPostBack('btnSubmit','OnClick');

或者做这样的事情:

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

【讨论】:

  • 此行是否调用服务器端事件?
  • @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");
          

          【讨论】:

            猜你喜欢
            • 2010-10-21
            • 2011-12-02
            • 1970-01-01
            • 2011-04-03
            • 1970-01-01
            • 2020-05-01
            • 2014-01-14
            • 2014-04-24
            • 1970-01-01
            相关资源
            最近更新 更多