禁用按钮呼叫服务器,然后重新启用按钮

时间:2019-07-10 11:45:31

标签: javascript jquery html go button

我见过很多类似的问题,但是花了几个小时浏览却找不到适合我情况的答案。

我有一个基于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 个答案:

答案 0 :(得分:1)

因为您要说的是要在单击按钮后禁用“提交”按钮。而且,您还说要在提交表单时刷新页面。

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

在上面的代码中,提交<form>时,名为<input>的{​​{1}}字段被禁用,并且subBtn返回了true以继续提交过程。重新加载页面后,按钮将恢复为原始状态,即<form>


我不确定那里的代码是怎么回事或执行enabled函数的方式/时间,但是getTime()可能只是提交表单。

return true;