I am using asp.net webforms; I want to submit a form and keep the button disabled until it gets saved to my database, exactly like Stackoverflow. Any suggestion?
protected void Lb_Save_Click(object sender, EventArgs e)
{
//disable my button
//Do a DB insert
//enable my button
}
EDIT:
I'll do a client-side validation first so I don't want my button to be disabled there but I want to disable it once the onclick function starts. Hope you all get my point.
Also i would like to do the same for asp:linkbutton but i don't know how firefox behaves for it. As the linkbutton will be rendered as anchor how can i disable it?
Guys you didn't get my question.
How to disable asp:button during postback? (not in jQuery/Javascript)
Он отключает его при submit()
, он никогда не включает его снова, потому что вы перенаправлены. Однако, если вы хотите выполнить какую-то проверку, вы просто выполните
$("#yourForm").submit(function(e) {
$("#yourButton").attr('disabled','disabled');
if (whateverValidation) {
e.preventDefault();
$("#yourButton").removeAttr('disabled');
}
});
Короткий ответ: Javascript.
Подробный ответ:
$('#formid').submit(function () {
$('#buttonid').hide();
$('#disabledbuttonimageid').show();
});
Хорошо, вот код, который может дать вам представление о том, что делать. Вам понадобится класс 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");
}
});
};
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();
}