Отключить кнопку вызова сервера, а затем снова включить кнопку - PullRequest
0 голосов
/ 10 июля 2019

Я видел много похожих вопросов на мой, но потратил несколько часов на просмотр и не могу найти ответ на мою ситуацию.

У меня есть веб-сервер на основе Go. У меня есть страница шаблона HTML, которая позволяет мне обновлять аппаратные часы и системные часы в системе 'nix с текущим временем браузера:

enter image description here

Кнопка обновления имеет тип submit и вызывает код Go, который выполняет некоторые системные вызовы, которые занимают несколько секунд, и я не могу заставить этот код сервера вызываться дважды, пока он еще обрабатывает первый запрос.

Итак, я хочу отключить кнопку обновления, а затем снова включить ее после ответа сервера.

У меня есть jQuery, поэтому я знаю, что могу иметь функцию, которая вызывается с помощью onclick, и выполнять эти вызовы:

$("#updateButton").prop("disabled", true);
$("#updateButton").prop("disabled", false);

У меня есть форма, отправляемая через кнопку (а не, например, вызов jQuery - хотя у меня все уши), потому что я хочу, чтобы форма обновлялась, когда сервер отвечает. Итак, у меня есть это:

<form action="/clock" method="POST">
    ...
</form>

Это значит, что некоторые значения на странице обновляются. Например, сообщение о статусе вверху и значения в различных полях (обновленные до фактически установленных значений).

Первая проблема, с которой я столкнулся, заключается в том, что если я вызываю функцию JS при нажатии кнопки, и она отключает кнопку, как указано выше, то мой код сервера не вызывается! Я понятия не имею, почему - это могло как-то остановить запрос на публикацию?

<script>
function getTime() {
    // Disable update button while waiting for response
    $("#updateButton").prop("disabled", true); // Stops post request???

    // How to re-enable update button?

}
</script>

А во-вторых, как мне снова включить кнопку? Я не знаю, как определить, когда сервер ответил.

1 Ответ

1 голос
/ 11 июля 2019

Поскольку вы говорите, что хотите отключить кнопку отправки после нажатия кнопки. Также вы говорите, что хотите, чтобы страница обновлялась во время отправки формы.

<form action="" method="post" onsubmit="subBtn.disabled = true; return true;">
    <input type="submit" name="subBtn" value="submit"/>
</form>

В приведенном выше коде при отправке <form> поле <input> с именем subBtn отключается, и возвращается true для <form>, чтобы продолжить процесс отправки. После перезагрузки страницы кнопка возвращается в исходное состояние enabled.

.

Я не уверен, что там происходит с кодом или как / когда выполняется функция getTime(), но return true; может просто отправить форму.

<script>
function getTime() {
    $("#updateButton").prop("disabled", true);
    return true; // this to continue with the original <form> process
}
</script>
...