最初禁用的按钮在Javascript启用后不会回发

时间:2012-12-14 14:50:13

标签: c# javascript asp.net button postback

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

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

启用:

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

我连接了另一个按钮以回发并启用服务器上的原始按钮(btnLoad),这似乎可以解决问题。因此,似乎是在客户端上启用了按钮,而不是在服务器上启用了按钮。我想除了强制回帖以启用按钮之外我什么也做不了?我不知道为什么我现在仍然会发布这个问题,但无论如何我都会这样做:)

4 个答案:

答案 0 :(得分:3)

这是因为服务器认为“哦,该按钮被禁用,我将忽略该消息”。

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

答案 1 :(得分:2)

仅提供disabled属性意味着它已被禁用。试试这个:

btnLoad.removeAttribute("disabled");

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我假设您在事件向服务器注册之前禁用了该按钮,因此启用它时它无法正常工作。

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

如果没有你可以覆盖按钮的onClick并使用JS强制回发:

$('#<%= btnLoad.ClientID %>').onClick(function() {
    __doPostBack("<%= btnLoad.ClientID %>", "");
});