2017-06-01 69 views
-1

我在html中实现了一个向导,显示一系列面板。有一个Next按钮来导航到后面的面板和一个Finish按钮。当选择下一个按钮时,我有一个点击处理程序执行一些数据的ajax帖子来保存表单。我也用Finish按钮来做到这一点。jQuery - 防止Ajax POST每10秒发生一次以上

用户快速按下“下一步”按钮3-6次并不少见。如果表单中没有数据更改,我宁愿不排队等待几个帖子。我的想法是,我只会每10秒执行一次该职位。有没有办法告诉jQuery来做到这一点?

+0

设置一个变量来保持被点击时的跟踪时间,那么你的函数调用AJAX的内部,检查是否最后的点击少于10秒前。 – nurdyguy

+0

当你点击下一步时,它会显示成功ajax后的下一个面板吗?只需禁用表单输入和下一个按钮,直到您显示下一个面板。这会使用户清楚发生了某些事情。如果用户多次点击,这表示用户不知道正在发生的事情或者认为已经损坏。 –

+0

否 - 将显示下一个面板,并且异步调度Ajax请求 – Corez

回答

0

只需创建一个围绕jQuery的AJAX调用自己的包装是这样的:

var lastPostCall = 0; 

function ajaxWrapper(url, data, ...) { 
    if(Date.now()-lastPostCall > 10000) { 
     lastPostCall = Date.now(); 
     // Do the real ajax call 
    } 
}