防止在keyup ajax帖子上提交多个表单

时间:2015-10-03 08:53:08

标签: ajax post

我目前正在制作零售店的表格,我需要在输入密钥时提交表格并将表格重定向到同一页面。在输入keyup时,ajax帖子被提交给php函数,并且在成功插入数据时我正在进行页面重定向。我目前能够做到这一点,但在少数情况下,用户多次按下回车键(可能是每秒3到4次),因为多次提交for。如何防止多次提交。尝试生成随机数并作为会话令牌传递,但每次提交都会生成一个新的随机数。 这是我的代码

    $(document).keyup(function(e){
    if (e.keyCode == 13) { 
        var postData = $("#invoiceForm").serialize();    
        $.ajax({
            url: "addsale()",
            type: "post",
            data: postData
        });
        e.preventDefault();
        return false;
    }
});

2 个答案:

答案 0 :(得分:0)

使用标志变量忽略新请求,如果之前没有完成,它将作为锁定。

var isOnWay=false;
$(document).keyup(function(e){
if (e.keyCode == 13) { 
    var postData = $("#invoiceForm").serialize();    
    $.ajax({
        url: "addsale()",
        type: "post",
        before:function(){
               if(isOnWay)
                  return false; // ignore request
               isOnWay=true;// start a lock flag
                },
        complete:function(){
                 isOnWay=false; //free up
                },
        data: postData
    });
    e.preventDefault();
    return false;
}

});

答案 1 :(得分:0)

抓住表单onsubmit处理程序以阻止提交。     Var isFormAlreadyPosted = false;     $( '形式')。提交(函数(EVT){

    If(isFormAlreadyPosted){
        evt.preventDefault()
    }
    isFormAlreadyPosted = true;
});