Как отключить кнопку после отправки формы?

Я использую asp.net webforms; я хочу отправить форму и отключить кнопку, пока она не будет сохранена в моей базе данных, точно так же, как Stackoverflow. Есть предложения?

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

EDIT:

сначала я сделаю проверку на стороне клиента, поэтому я не хочу, чтобы моя кнопка была отключена, но я хочу отключить ее после запуска функции onclick. Надеюсь, вы все меня поняли.

также я хотел бы сделать то же самое для ASP:linkbutton но я не знаю как firefox ведет себя для него. Как linkbutton будет отображаться как якорь, как я могу отключить его?

Ребята, вы не поняли мой вопрос.

Как отключить asp: кнопка во время обратной передачи? (не в jQuery/Javascript)

6 ответов


он отключает его на submit(), Он никогда не включает его снова, потому что вы перенаправлены. Однако, если вы хотите сделать какую-то проверку, вы просто сделаете

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

короткий ответ: Javascript.

более длинный ответ:

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

Как? Это волшебство.

теперь, если вы не хотите javascript:

  1. при обратной передаче отключите кнопку.
  2. не делайте реальной работы, но установите переменную сеанса, чтобы указать, какая работа необходима.
  3. установите метатег HTML для принудительного немедленного обновления.
  4. Return-браузер немедленно обновит страницу.
  5. когда вы получаете запрос сейчас, вы проверяете сеанс var и выполняете работу.

могут быть и другие но, честно говоря, все они странные, почему вы не хотите JavaScript?


единственный способ сделать это с помощью веб-форм (который не является mvc) - скрыть исходную кнопку и заменить ее изображением отключенной кнопки или другой кнопки, которая отключена. Если вы действительно отключите кнопку. net JavaScript не будет делать отправки.

(Да, я знаю, что вы можете "взломать" .NET JavaScript, но на самом деле, это лучше?)

JavaScript, чтобы сделать это просто, как только вы знаете, что вам нужно сделать-если вы хотите увидеть какой-то код, я должен быть в состоянии выкопать его-просто спросите в комментариях.

NB: MVC должен быть таким же простым, как код в других ответах, которые просто отключают кнопку перед вызовом ajax. Так же использует MVC, чтобы у них не было проблем, которые вы испытываете.


ок, вот некоторый код, который может дать вам представление о том, что делать. Вам понадобится класс DISABLED, который установит соответствующие стили CSS кнопки или что-то еще, что кажется отключенным...

КЛИЕНТСКИЙ JAVA-СКРИПТ

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");                       
       }

     });        
};

СЕРВЕРНАЯ СТОРОНА 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();
}

пожалуйста, попробуйте следующий код.

jQuery ('#mybuttonid').нажмите (функция(){ на jQuery(этот).attr ('disabled', disabled'); });