$(document).ready(function() {
setInterval($("#to").on("change keyup paste click mouseout", function() {
$.get('ajaxSearch.php', $("#form").serialize(), function(data) {
$('#result').html(data);
});
}, 3000);
});
ajax延迟或setTimeout不起作用。我想延迟输入字段并在3秒后运行ajax但它无法正常工作。
答案 0 :(得分:3)
您应该使用setTimeout
来延迟ajax请求。
如果change keyup paste click mouseout
事件之一被触发,您只需取消之前的延迟并创建一个新的延迟。
$(document).ready(function() {
var timer_id;
$("#to").on("change keyup paste click mouseout", function() {
if (timer_id) {
clearTimeout(timer_id);
}
timer_id = setTimeout(function() {
$.get('ajaxSearch.php', $("#form").serialize(), function(data) {
$('#result').html(data);
});
}, 3000);
});
});
答案 1 :(得分:0)
您的语法错误,setInterval()也应该在处理程序
中$(document).ready(function () {
var interval;
$("#to").on("change keyup paste click mouseout", function () {
if (interval) {
return
};
setInterval(function () {
$.get('ajaxSearch.php', $("#form").serialize(), function (data) {
$('#result').html(data);
});
interval = undefined;
}, 3000);
});
});
此外,如果已经有一个时间间隔,我们不需要再添加一个电话。
答案 2 :(得分:0)
在你的情况下你设置延迟到事件处理(为什么你使用setInterval而不是setTimeout?)
试
$(document).ready(function() {
$("#to").on("change keyup paste click mouseout", function() {
setTimeout(function(){
$.get('ajaxSearch.php', $("#form").serialize(), function(data) {
$('#result').html(data);
});
}, 3000);
});
});