Бэкэнд-решение предпочтительнее, но если вы хотите сделать это также на стороне клиента (или вместо):
Если ваш onsubmit
вернет false, он прекратит отправку.
Я был бы склонен решить это следующим образом:
- Временное отключение кнопки на секунду, чтобы пользователь не мог снова быстро отправить запрос, и / или
- Игнорирование последующих попыток отправки, если не прошло хотя бы секунды.
Я бы не стал пытаться поставить в очередь все представленные материалы и распределить их, потому что пользователь мог нажать кнопку много раз.
Итак, следующее игнорирует дополнительные попытки отправки, сделанные в течение секунды , а отключает кнопку отправки. Почему оба? Если форма содержит поля, пользователь может отправить ее, нажав клавишу Enter.
<form name="test" action="http://mydomain.dyndns.org/?8" target="results"
method="POST" onSubmit="return testSubmit();">
<input id="submitButton" type="submit" value=" ← Move Left " />
</form>
<script>
var allowSubmit = true;
function testSubmit() {
if (!allowSubmit)
return false;
allowSubmit = false;
document.getElementById("submitButton").disabled = true;
setTimeout(function() {
allowSubmit = true;
document.getElementById("submitButton").disabled = false;
}, 1000);
return true;
}
</script>
Обратите внимание на этот код: onSubmit="return testSubmit();"
- вам нужен «возврат» или значение, возвращаемое из testSubmit()
, отбрасывается, и отправка не будет предотвращена.