У меня есть следующий код jQuery для предотвращения двойного нажатия кнопки. Он работает нормально. Я использую Page_ClientValidate()
, чтобы гарантировать двойное нажатие, только если страница действительна. [Если есть ошибки проверки, флаг не должен быть установлен, так как нет возврата к серверу]
Есть ли лучший способ предотвратить второй щелчок на кнопке до загрузки страницы?
Можно ли установить флаг isOperationInProgress = yesIndicator
, только если страница вызывает обратную передачу на сервер? Есть ли подходящий event
для него, который будет вызываться до того, как пользователь может нажать кнопку второй раз?
Примечание. Я ищу решение, для которого не требуется никакого нового API
Примечание. Этот вопрос не является дубликатом. Здесь я стараюсь избегать использования Page_ClientValidate()
. Также я ищу event
, где я могу перемещать код так, чтобы мне не нужно было использовать Page_ClientValidate()
Примечание. В моем сценарии нет ajax. Форма ASP.Net
будет отправлена на сервер синхронно. Событие нажатия кнопки в javascript предназначено только для предотвращения двойного щелчка. Представление формы синхронно с использованием ASP.Net.
Существующий код
$(document).ready(function () {
var noIndicator = 'No';
var yesIndicator = 'Yes';
var isOperationInProgress = 'No';
$('.applicationButton').click(function (e) {
// Prevent button from double click
var isPageValid = Page_ClientValidate();
if (isPageValid) {
if (isOperationInProgress == noIndicator) {
isOperationInProgress = yesIndicator;
} else {
e.preventDefault();
}
}
});
});
Ссылки
- Валидатор вызывает неправильное поведение для проверки двойного щелчка
- Использовать ли Page_IsValid или Page_ClientValidate() (для событий на стороне клиента)
Примечание @Peter Ivan в приведенных выше ссылках:
вызов page_ClientValidate() может привести к слишком навязчивой странице (несколько предупреждений и т.д.).