2

我有一个默认禁用的按钮,但通过 JavaScript 启用(或未禁用?),但当我单击它时它实际上并没有做任何事情(即发布)。相关代码:

<asp:Button runat="server" ID="btnLoad" Text="Load" 
    OnClick="btnLoad_Click" Enabled="False"/>

通过以下方式启用:

var btnLoad = $get("<%= btnLoad.ClientID %>");
btnLoad.disabled = false;

我连接了另一个按钮来回发并启用服务器上的原始按钮(btnLoad),这似乎起到了作用。因此,似乎是在客户端上启用了按钮,但在服务器上却没有。我想除了强制回帖以启用按钮之外,我无能为力吗?我不知道为什么我现在仍然发布这个问题,但无论如何我都会:)

4

4 回答 4

3

这是因为服务器认为“哦,那个按钮被禁用了,我会忽略那个消息”。

最好的方法是在服务器端启用它,然后在页面上使用 JavaScript 禁用它(在页面<script>顶部放置一个标签) - 然后像现在一样重新启用它。

于 2012-12-14T15:08:12.963 回答
2

disabled存在该属性意味着它已被禁用。试试这个:

btnLoad.removeAttribute("disabled");
于 2012-12-14T14:52:17.670 回答
0

禁用该控件的视图状态并查看它是否有效。视图状态“记住”按钮被禁用并且可能不会触发 on_click 事件

于 2012-12-14T15:11:32.380 回答
0

我假设您在向服务器注册事件之前禁用该按钮,因此启用它时它不起作用的原因。

如果您在后面的代码中禁用它,则Pre_Render改为在事件上执行它。如果您是通过 javascript 执行此操作,请在$(document).ready().

如果您无法覆盖按钮的 onClick 并使用 JS 强制回发:

$('#<%= btnLoad.ClientID %>').onClick(function() {
    __doPostBack("<%= btnLoad.ClientID %>", "");
});
于 2012-12-14T15:13:24.873 回答