防止来自bootstrap模式的重复ajax调用?

时间:2016-05-17 13:18:27

标签: jquery ajax twitter-bootstrap

在bootstrap模式中,当用户按Enter键时,会触发ajax调用,

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

});

但是,如果用户长时间按下回车键,则会意外地进行过多次提交,因此会在数据库中输入不需要的记录。如何阻止这种意外行为?在这种情况下是否有最佳做法?

1 个答案:

答案 0 :(得分:2)

我不知道这是不是最好的做法,但我会这样做

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

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);
    }

});