2016-05-17 26 views
1

在引导模式,当用户按下回车键,Ajax调用被触发,防止从引导模式重复ajax调用?

$('#amount').keypress(function(event){ 
    if(event.which==13) { 
     $("#final").trigger("click"); // this triggers the ajax call 
    } 

}); 

但如果不小心,如果用户按下用于长回车键,太多的意见书是由,因此,不需要记录输入到数据库中。如何阻止这种意外的行为?在这种情况下是否有最佳做法?

回答

2

我不知道这是否是一个最佳实践或没有,但我会做这样

window.alreadySubmit = false; 
$('#amount').keypress(function(event){ 
    if(event.which==13 && !alreadySubmit) { 
     window.alreadySubmit = true; 
     $("#final").trigger("click"); // this triggers the ajax call 
    } 

}); 

然后在阿贾克斯成功回调windowd.alreadySubmit变量重置为false

alernatively你可以设置超时时间,如下所示:

var myTimeout = 3000; //ms = 3 seconds 
window.alreadySubmit = false; 

$('#amount').keypress(function(event){ 
    if(event.which==13 && !alreadySubmit) { 
     window.alreadySubmit = true; 
     $("#final").trigger("click"); // this triggers the ajax call 
     setTimeout(function(){ window.alreadySubmit = false; }, myTimeout); 
    } 

}); 
+0

您的解决方案有效。但是如果我想在某个时候再次使用这个事件怎么办?你可能的建议是在我的ajax调用被执行后添加'window.alreadySubmit = false;'。我尝试过,但问题仍然存在。如果我长按Enter键,仍然会输入重复记录。 –

+0

@RameshPareek好吧,那个代码在上一次调用完成后就可以提交了,所以如果ajax调用很快执行,你可以注意到重复的记录。为了避免检查我更新的答案 – pumpkinzzz

+0

,做到了!将其设置为1000ms就足够了。如果你认为它会帮助未来的访问者,请考虑提出这个问题。 –