Теперь я могу пойти по этому пути неправильно, поэтому, если есть лучшее решение, пожалуйста, напишите об этом. То, что я пытаюсь сделать, это отключить кнопку, когда она нажата, чтобы предотвратить двойной щелчок. В прошлом я просто отключал кнопку по нажатию кнопки мыши, но с веб-формами я столкнулся с небольшим затруднением, потому что на странице есть проверка, поэтому мне нужно ее запустить и мне нужно отправить обратно.
Итак, у меня есть следующая функция JQuery, позволяющая отключить кнопку при нажатии. Вот JQuery:
jQuery.fn.disableOnClick =
function()
{
return this.each(function()
{
$(this).click(function()
{
$(this).attr('disabled', 'disabled');
return true;
})
})
};
Предполагаемое использование будет:
$(document).ready(function()
{
$("#<%= btnSomeButton.ClientID %>").disableOnClick ();
});
Это не работает ... кнопка всегда отключается, проверка игнорируется и обратная передача даже не происходит. Я бы предположил, потому что я перезаписал обработчик кликов. Предложения?
ОБНОВЛЕНИЕ: Я попробовал просто базовую функцию, которая связана с 'OnClientClick' кнопки, чтобы сделать:
// In my Page_Load
btnSomeButton.OnClientClick = "return DisableButton('" + btnSomeButton.ClientID + "');";
// Javascript function
function DisableButton(id)
{
var bButton = $("#" + id);
if (Page_ClientValidate())
{
$("#" + id).attr('disabled', 'disabled');
__doPostBack(id, '');
}
}
Это работает, как и ожидалось, при настройке не главной страницы, но когда я пытаюсь использовать ее со страницей с главной страницей, происходит обратная передача, и запускается Page_Load, но обработчик нажатия кнопки никогда не вызывается. Это похоже на то, что __doPostBack
не посылает, какое управляющее событие должно сработать правильно.
Любые предложения по изменениям или даже совершенно другой подход?