首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止多个表单提交

防止多个表单提交
EN

Stack Overflow用户
提问于 2013-08-04 20:00:27
回答 3查看 175关注 0票数 0

我使用JQuery和绑定到div (不是输入字段)的事件侦听器提交表单,并试图防止多次提交,这样客户就不会多收费用。我试图通过删除单击的div的submit-button类来实现这一点,因此下次用户单击它时,JQuery将不会侦听与防止多个提交的submit-button关联的事件。

然而,由于某种原因,使用下面的实现并不能阻止多个提交。

HTML

代码语言:javascript
复制
<div class="submit-button button-style">Submit</div>

JQuery

代码语言:javascript
复制
$(".submit-button").click(function(){
    $(this).removeClass("submit-button");
    //**submit form**
});

注意:我必须坚持使用上述html的解决方案,因此使用submit类型的submit元素的解决方案是没有用的。

我很感激任何关于如何使这项工作奏效的建议。事先非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-04 20:02:54

你可以利用.one()来防止它多次开火-

代码语言:javascript
复制
$(".submit-button").one('click',function(){
    //**submit form**
});

http://api.jquery.com/one/

编辑:

如有错误:

代码语言:javascript
复制
function submitForm(){
    //**submit form**
   $.post('submit.php').error(function(){
        // rebind event on error
        $(".submit-button").one('click',submitForm);
   });
}
$(".submit-button").one('click',submitForm);
票数 1
EN

Stack Overflow用户

发布于 2013-08-04 20:03:08

你可以使用这样的东西:

代码语言:javascript
复制
$('something').one('click', function(){
   // submit code
});

只会开火一次。

票数 0
EN

Stack Overflow用户

发布于 2013-08-04 21:57:54

很大一部分用户不会费心点击submit按钮来提交表单--还有其他更方便的方法,比如当光标焦点在表单字段上时按enter键。

一种更健壮的方法是通过表单提交事件阻止表单,并保持一个变量来跟踪表单提交状态。

代码语言:javascript
复制
var submitted = false;
$("form#myForm").submit(function(evt){
    if (submitted) {
        evt.preventDefault();//stops form submission
        return;
    }

    submitted = true;
});

我省略了这个例子的表单验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18047021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档