我目前正在制作零售店的表格,我需要在输入密钥时提交表格并将表格重定向到同一页面。在输入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;
}
});
答案 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;
});