我有一个表单在提交时执行AJAX操作。在用户提交表单后,我想将最短的等待时间设为5秒,再次发布。
有什么更好的方法?我制作了这个剧本(不起作用,但我想这里有想法):
$("form#submit_under_wall"+array[1]).submit(function() {
var submit_timestamp=0;
var c = new Date();
var now = ISODateString(c);
if(now-submit_timestamp>5){
var d = new Date();
var timestamp_message = ISODateString(d);
submit_timestamp = timestamp_message ;
//AJAX ACTION
}else{ alert("Wait 5sec between each post."); }
return false;
});
答案 0 :(得分:2)
这不起作用,因为每次提交时都会重置时间戳,您需要在函数外部移动submit_timestamp。此外,5应该是5 * 1000
这样的事情(未经测试):
var submitTime = (new Date()).getTime() - 5000; //let user submit if he clicks within 5s of page load
$("form#submit_under_wall"+array[1]).submit(function(e) {
var now = (new Date()).getTime();
if(now-submitTime > 5000){
submitTime = (new Date()).getTime();
//AJAX ACTION
} else {
alert("Wait 5sec between each post.");
}
e.preventDefault();
});
答案 1 :(得分:0)
最简单,最标准的方法是使用Javascript原生setTimeout
方法。
var last_action;
function ajax_action() {
last_action = Date.getTime();
// AJAX STUFF
}
$("form#submit_under_wall"+array[1]).submit(function(e) {
e.preventDefault(); // Sexier than 'return false'
if(last_action != undefined) {
setTimeout(ajax_action, Date.getTime()-last_action); // Wait for 5s before doing the action
} else {
ajax_action();
}
});
答案 2 :(得分:0)
使用window.setTimeout()
在函数中包含您想要执行的操作(例如function foo (){ alert('test'); }
)
请拨打5秒延迟setTimeout(foo,5000)