我正在使用 Google Maps API 制作一个小型应用程序。您可以在文本框中输入 pin,然后将触发 AJAX 调用以从我的数据库获取坐标。我正在调用 keyup 事件上的操作,并且在文本框中出现 2 个字符后。问题是我希望用户能够在我开始进行 AJAX 调用之前输入整个内容。我已将异步设置为 false,否则异步调用不会让我从 map 中删除标记并在标记全部消失之前引入更多标记。
$('input[name="location"]').keyup(function(){
if($(this).val().length > 1){
$(this).css('background', '#fff url("/images/indicator.gif") no-repeat center right');
deleteOverlays();
$.ajax({
dataType: "json",
url: "locAjax.php",
data: ({term : this.value}),
async: false,
type: "GET",
success: function(data) {
setMarkers(map, data);
}
});
$(this).css('background', '#fff');
}
});
我可以在调用之前使用某种超时或其他方式来给用户足够的时间来编写整个内容吗?或至少一半。
请告诉我。
非常感谢。
最佳答案
var timer;
$('input[name="location"]').keyup(function(){
clearTimeout(timer);
timer = setTimeout(function(){
if($(this).val().length > 1){
$(this).css('background', '#fff url("/images/indicator.gif") no-repeat center right');
deleteOverlays();
$.ajax({
dataType: "json",
url: "locAjax.php",
data: ({term : this.value}),
async: false,
type: "GET",
success: function(data) {
setMarkers(map, data);
}
});
$(this).css('background', '#fff');
}
}, 5000 ); // <--- do ajax call after 5 seconds of the last keyup character...
});
关于ajax - 如何在 jQuery 中发出 keyup 事件 ajax 请求之前保持几毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665366/