表单提交后如何禁用按钮?

时间:2010-08-27 10:56:47

标签: jquery asp.net webforms

我正在使用asp.net webforms;我想提交一个表单并保持按钮被禁用,直到它被保存到我的数据库,就像Stackoverflow一样。有什么建议吗?

protected void Lb_Save_Click(object sender, EventArgs e)
{
   //disable my button
      //Do a DB insert 
   //enable my button
}

修改

我会首先进行客户端验证,所以我不想在那里禁用我的按钮但是我想在onc​​lick函数启动后禁用它。希望你们都明白我的观点。

另外我想对asp:linkbutton做同样的事情,但我不知道firefox如何表现。由于链接按钮将呈现为锚,我如何禁用它?

你们没有得到我的问题。

如何在回发期间禁用asp:按钮?(不在jQuery / Javascript中)

6 个答案:

答案 0 :(得分:7)

它在submit()上禁用它,它再也不会启用它,因为你被重定向了。但是,如果你想进行某种验证,你只需要做

$("#yourForm").submit(function(e) {
    $("#yourButton").attr('disabled','disabled');
    if (whateverValidation) {
        e.preventDefault();
        $("#yourButton").removeAttr('disabled');
    } 
});

答案 1 :(得分:2)

简答:Javascript。

更长的答案:

$('#formid').submit(function () {
     $('#buttonid').hide();
 $('#disabledbuttonimageid').show();
});

答案 2 :(得分:2)

如何?那是一种魔力。

现在,如果你不想要javascript:

  1. 在回发时,禁用按钮。
  2. 不做任何实际工作,但设置Session变量以指示需要做什么工作。
  3. 设置HTML元标记以强制立即刷新。
  4. 返回 - 浏览器会立即刷新页面。
  5. 现在获得请求时,检查Session var,然后开始工作。
  6. 可能还有其他方法,但坦率地说,他们都很奇怪,为什么你不想要JavaScript?

答案 3 :(得分:2)

使用网络表单(不是mvc)执行此操作的唯一方法是隐藏原始按钮并将其替换为禁用按钮的图片或禁用的其他按钮。如果你实际上禁用了按钮.net的JavaScript将不会提交。

(是的,我知道你可以“破解”.net JavaScript,但实际上,这样更好吗?)

一旦你知道你需要做什么,做这件事的JavaScript很简单 - 如果你想看一些我应该能够挖掘的代码 - 只需在评论中提问。

注意:MVC应该像其他答案中的代码一样简单,只是在ajax调用之前禁用按钮。 SO正在使用MVC,因此他们没有遇到您遇到的问题。

答案 4 :(得分:0)

好的,这里有一些代码可以让你知道该怎么做。您将需要类DISABLED,它将设置按钮的适当CSS样式或其他任何使其显示为禁用...

客户端JAVA SCRIPT

function doRequest(MY_DATA_THAT_I_WANT_TO_SEND)
{
    $.ajax({
       type: "GET",
       url: "saving_page.aspx?data="+MY_DATA_THAT_I_WANT_TO_SEND,
       timeout: 10000,
       beforeSend: function()
       {    
           $("#button").toggleClass("DISSABLED");
       },
       complete: function(XMLHttpRequest, textStatus)
       {
           //Or you can remove success handler and let complete hander enables
           //the button, so it gets enabled if there was an error or there was success
           //$("#button").toggleClass("DISSABLED");         
       },                             
       success: function(data)
       {                                            

           if(data == "OK") $("#button").toggleClass("DISSABLED");                       
       }

     });        
};

SERVER SIDE CS

protected void Page_Load(object sender, EventArgs e)
{
    string data = Request.Params.Get("data");
    saveDataToDataBase(data);

    //Sleep some more...
    Thread.Sleep(3000);

    //Send ok
    Response.Write("OK");
    Response.End();
}

答案 5 :(得分:-1)

请尝试以下代码。

jQuery的( '#mybuttonid')。点击(函数(){ jQuery的(本).attr( '禁用',禁用'); });