Как отключить кнопку после отправки формы?
Я использую 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:
- при обратной передаче отключите кнопку.
- не делайте реальной работы, но установите переменную сеанса, чтобы указать, какая работа необходима.
- установите метатег HTML для принудительного немедленного обновления.
- Return-браузер немедленно обновит страницу.
- когда вы получаете запрос сейчас, вы проверяете сеанс 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'); });