C# 禁用按钮不会';t在服务器端触发单击事件

C# 禁用按钮不会';t在服务器端触发单击事件,c#,javascript,asp.net,C#,Javascript,Asp.net,我的aspx页面中有一个imagebutton,如: <asp:ImageButton ID="btnProcessPayment" ImageUrl="~/Images/process-payment.png" OnClientClick="return disableButton(this);" runat="server" OnClick="btnProcessPayment_Click" /> 正如您在

我的aspx页面中有一个imagebutton,如:

<asp:ImageButton ID="btnProcessPayment" ImageUrl="~/Images/process-payment.png" OnClientClick="return disableButton(this);"
                                    runat="server" OnClick="btnProcessPayment_Click" />
正如您在我的javascript事件处理程序中所看到的,我已禁用该按钮,以防止用户单击该按钮两次。然而,即使我的服务器端事件处理程序也不会因此而被触发。我做错了什么


注意:如果我注释掉这一行
button.disabled=true一切正常。

禁用该按钮也会禁用表单提交。您需要自己进行提交:

function disableButton(button) { 
    button.disabled = true; 
    __doPostBack(<%= btnProcessPayment.ClientID %>,'');   // need to manually submit
    return true; 
} 
功能禁用按钮(按钮){
button.disabled=true;
__doPostBack(,“”);//需要手动提交
返回true;
} 

根据建议更新

您需要触发按钮的服务器端事件

onclick="this.disabled=true;__doPostBack('buttonclientid','');"


使用这个,它对我有效

 __doPostBack('<%= btnSubmit.ClientID %>', '');  
uu doPostBack(“”,”);

其中
btnSubmit
是我的按钮的ID,我想触发该按钮的服务器端单击事件。它起作用了。

这不起作用。事件处理程序仍不执行。最后,我使用Vinay的方法使它工作了:虽然它看起来有点黑客设置超时,然后禁用,但它工作了。
button.id
-检查这是否正确。否则,请尝试执行
document.form1.submit()
(根据您的代码进行更改)。将button.id替换为@Brad8118:不要假设jQuery!或原型。
$
到底代表什么?:)我只是注意到了同样的问题。至少我不是唯一一个。
 function disableButton(button) {
            button.disabled = true;
            __doPostBack('buttonclientid','');
            return true;
        }
 __doPostBack('<%= btnSubmit.ClientID %>', '');