如何防止多次意外提交表单 - 在客户端没有JS?

时间:2014-11-21 11:27:36

标签: html css forms client-side

当用户双击提交按钮(或点击输入两次)时,表单会提交两次

我希望它只发送一次

由于我的客户要求,我无法使用JavaScript

作为第一种方法,我想找到一个解决方案,无需在服务器端进行修改

(我知道它可以轻松完成if JS was enabled,或者我想通过将传入数据与之前在服务器端接收的数据进行比较来过滤传入数据。)

2 个答案:

答案 0 :(得分:2)

不可能。提交后,您必须使用js禁用按钮(或以其他方式阻止提交)。

还要记住:无论您使用js修改什么,客户端都可以使用devtools撤消它。因此,清理服务器端的所有内容。

答案 1 :(得分:2)

一些非常hacky,根本不是语义,使用CSS的解决方法会在点击时隐藏链接(将其设置为按钮),但我真的不建议 - javascript更好(这也不会阻止用户点击输入两次)。

input[type="checkbox"]:checked + label {
  display: none;
}

input[type="checkbox"] {
  display: none;
}  
<input type="checkbox" id="button-label">
<label for="button-label">
  <a class="button">click me</a>
</label>