Jquery 防止从引导模式重复ajax调用?
在引导模式中,当用户按下Enter键时,会触发ajax调用Jquery 防止从引导模式重复ajax调用?,jquery,ajax,twitter-bootstrap,Jquery,Ajax,Twitter Bootstrap,在引导模式中,当用户按下Enter键时,会触发ajax调用 $('#amount').keypress(function(event){ if(event.which==13) { $( "#final" ).trigger( "click" ); // this triggers the ajax call } }); 但是,如果用户长时间按enter键不小心会导致提交过多,因此会在数据库中输入不需要的记录。如何阻止这种意外行为?在这种情况下有什么最佳实践吗
$('#amount').keypress(function(event){
if(event.which==13) {
$( "#final" ).trigger( "click" ); // this triggers the ajax call
}
});
但是,如果用户长时间按enter键不小心会导致提交过多,因此会在数据库中输入不需要的记录。如何阻止这种意外行为?在这种情况下有什么最佳实践吗?我不知道这是否是最佳实践,但我会这样做
window.alreadySubmit = false;
$('#amount').keypress(function(event){
if(event.which==13 && !alreadySubmit) {
window.alreadySubmit = true;
$( "#final" ).trigger( "click" ); // this triggers the ajax call
}
});
然后在ajax成功回调中,将windowd.alreadySubmit
变量重置为false
通常,您可以设置一个超时,如下所示:
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);
}
});
你的解决方案有效。但如果我想在某个时间后再次使用此事件,该怎么办?您可能的建议是添加
window.alreadySubmit=false代码>执行ajax调用后。我试过了,但问题仍然存在。如果我长按Enter键,仍然会输入一条重复的记录。@RameshPareek好吧,这段代码会在上一次调用完成后启用submit,因此如果ajax调用快速执行,您会注意到重复的记录。为了避免这种情况,请检查我的最新答案,这就成功了!将其设置为1000ms就足够了。如果你认为这会有助于未来的访问者,请考虑一下这个问题。