如何防止用户两次提交表单

15 html javascript

<input type="submit" name="btnADD" id="btnADD" value="ADD"/>
Run Code Online (Sandbox Code Playgroud)

当用户点击两次添加按钮时,从提交两次同样的数据到表中.所以请帮我限制用户两次提交.

rog*_*err 27

提交表单后,使用jQuery附加一个处理程序,该程序员劫持并"禁用"提交处理程序:

var $myForm = $("#my_form");
$myForm.submit(function(){
    $myForm.submit(function(){
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

从提交处理程序返回"false"将阻止表单提交.禁用按钮可能会对表单的处理方式产生奇怪的影响.这种方法似乎基本上没有副作用,甚至可以在具有多个提交按钮的表单上工作.

  • 非常喜欢.非常哇.如此优雅. (9认同)
  • 对此的小抱怨是,每次用户点击按钮时,您将添加另一个事件处理程序.这不会导致任何问题,但有些人可能不希望这样.一个简单的解决方法是在添加新表单之前简单地删除表单上的任何"提交"处理程序. (2认同)

Vij*_*jay 19

试试这个代码..

<input type="submit" name="btnADD" id="btnADD" value="ADD" onclick="this.disabled=true;this.value='Sending, please wait...';this.form.submit();" />
Run Code Online (Sandbox Code Playgroud)

  • 如果用户在字段上按Enter键,这还不会提交吗? (7认同)
  • @ foxt7ot如果一个用户是那么精明,他会找到一种方法来发帖,无论你做什么javascript来防止它.只有服务器端重复检查才能真正阻止它. (2认同)

mlw*_*mos 5

您可以在单击或隐藏按钮后禁用该按钮。

<input type="submit" name="btnADD" id="btnADD" value="ADD" onclick="disableButton(this)"/>
Run Code Online (Sandbox Code Playgroud)

js:

 function disableButton(button) {
     button.disabled = true;
     button.value = "submitting...."
     button.form.submit();
}
Run Code Online (Sandbox Code Playgroud)