我见过很多类似的问题,但是花了几个小时浏览却找不到适合我情况的答案。
我有一个基于Go的网络服务器。我有一个HTML模板页面,可让我使用当前浏览器时间更新'nix系统上的硬件时钟和系统时钟:
更新按钮的类型为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>
其次,如何重新启用该按钮?我不知道如何分辨服务器何时响应。
答案 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;