多次点击提交后如何只提交一次表单?

Sal*_*lil 17 html javascript forms ruby-on-rails

我有问题,当我试图通过点击提交按钮提交表单时,如果我再次点击提交按钮,它将需要一些时间来发布请求它将再次发送所有参数和参数保存两次,三次......等等.

我不知道如何限制提交按钮,以便表单不应该提交两次.我想当我提交时,我必须禁用提交按钮,以便用户无法再次点击它,这是正确的方法吗?

And*_*y E 32

禁用该按钮是一种解决方案,但对于刚刚按Enter键以提交表单的键盘用户可能会出现问题.在这种情况下,该按钮不会被禁用.肯定的方法是onsubmit像这样处理事件:

(function () {
    var allowSubmit = true;
    frm.onsubmit = function () {
       if (allowSubmit)
           allowSubmit = false;
       else 
           return false;
    }
})();
Run Code Online (Sandbox Code Playgroud)

(好吧,尽管如此,你可以通过JS启用).您可以禁用该按钮作为最终用户的视觉确认,表单也只能提交一次.

  • 确实如此,我猜如果有人可以通过猛烈的方式击中鼠标,他们也可以通过命中注入按钮 (6认同)

Zoi*_*erg 29

<input type="submit" onclick="this.disabled = true" value="Save"/>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您的按钮具有name属性,禁用它会阻止该值包含在POST/GET中. (2认同)
  • 这不会阻止多次发送表单,请参阅_Andy E_的答案. (2认同)

小智 5

在 chrome 中使用这个:

<input type="submit" onclick="this.form.submit();this.disabled = true;" value="Save"/>
Run Code Online (Sandbox Code Playgroud)