【问题标题】:If an asp.net button has Enabled="false", it doesn't call a javascript function before executing code-behind如果 asp.net 按钮已启用 =“false”,则在执行代码隐藏之前它不会调用 javascript 函数
【发布时间】:2019-10-30 19:00:40
【问题描述】:

我正在开发一个 asp.net 网络表单项目。在一个页面上,我有一个 asp.net 按钮,该按钮将保持禁用状态。此按钮将在 javascript 事件后启用。单击按钮时,首先我想执行一个 javascript 函数,然后执行一个代码隐藏函数。问题是只调用了代码隐藏函数。但是,如果按钮一直处于启用状态,这意味着 Enabled="false" 属性在 asp.net 按钮中不存在,则它首先调用 js 函数,然后转到代码隐藏。有什么方法可以在页面加载时禁用按钮,然后通过 js 以编程方式启用它?

<asp:button id="btnSave" ClientIdMode="Static" runat="server" Enabled="false" Text="Save"  
onClientClick="javascript:return btnSave_ClientClick();" onclick="btnSave_Click" 
CssClass="buttonStyle"></asp:button>

function btnSave_ClientClick(){
   //js function - do something
}

protected void btnSave_Click(object sender, System.EventArgs e)
{
    //code behind - do something
}

【问题讨论】:

  • 您不应该在 onClientClick 事件中需要javascript:return。看看是否先删除它们。
  • 您说“此按钮将在 javascript 事件后启用。”听起来这已经发生了,但是你问这是否可能。请澄清。
  • 启用按钮工作正常。一旦启用,它应该首先调用客户端函数 btnSave_ClientClick()。相反,它直接进入服务器端,btnSave_Click
  • 有人问过这个问题。 stackoverflow.com/questions/5990098/…
  • 嗨,Skye,它实际上解决了我的问题!他使用 disabled="disabled" 而不是 Enable="false"。谢谢你的链接!

标签: javascript asp.net


【解决方案1】:

您应该能够以通常的 html/js 方式启用按钮,因为该按钮已经在页面上,以 html 呈现:

function enableBtn(){
    document.getElementById("btnSave").disabled = false;
}

您可以将这一行放在另一个函数中,但是您将无法通过 btnSave 按钮使用它,因为显然它已被禁用。嗯。

【讨论】:

  • 这正是我启用按钮的方式。我遇到的问题是它在调用服务器端 btnSave_Click() 之前不执行客户端 btnSave_ClientClick()。
  • 你怎么知道的?该函数不执行任何操作。你在点击事件中有return,它什么都不返回。在您的问题下查看我的评论。向 js 函数添加警报或其他内容,以便您真正知道它是否在工作,或者更新问题以显示函数中的 is 内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2012-03-11
  • 2015-05-03
相关资源
最近更新 更多