禁用按钮不会触发服务器端的单击事件

时间:2011-08-24 05:23:20

标签: c# javascript asp.net

我的aspx页面中有一个图像按钮,如:

<asp:ImageButton ID="btnProcessPayment" ImageUrl="~/Images/process-payment.png" OnClientClick="return disableButton(this);"
                                    runat="server" OnClick="btnProcessPayment_Click" />

这是我的javascript函数:

function disableButton(button) {
            button.disabled = true;
            return true;
        }

正如您在我的javascript事件处理程序中看到的,我已禁用该按钮以防止用户单击该按钮两次。但是,即使我的服务器端事件处理程序也不会因此而被触发。我做错了什么?

注意:如果我注释掉这一行button.disabled = true;,那么一切都很顺利。

3 个答案:

答案 0 :(得分:5)

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

function disableButton(button) { 
    button.disabled = true; 
    __doPostBack(<%= btnProcessPayment.ClientID %>,'');   // need to manually submit
    return true; 
} 

根据Waqas建议进行了更新!

答案 1 :(得分:2)

你需要发出像这样的按钮的服务器端事件

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

 function disableButton(button) {
            button.disabled = true;
            __doPostBack('buttonclientid','');
            return true;
        }

答案 2 :(得分:0)

使用它,它对我有用

 __doPostBack('<%= btnSubmit.ClientID %>', '');  

其中btnSubmit是我的按钮的ID,我想触发按钮的服务器端点击事件。它有效。