Javascript 仅在用户停止键入后使用Google API

Javascript 仅在用户停止键入后使用Google API,javascript,Javascript,var locInputTimeout=null; var input=document.getElementById('inputxt'); input.onkeyup=功能(e){ clearTimeout(locInputTimeout); locInputTimeout=setTimeout(函数(){initAutocomplete()},2000); }; 函数initAutocomplete(){ var autocomplete=new google.maps.places.au

var locInputTimeout=null;
var input=document.getElementById('inputxt');
input.onkeyup=功能(e){
clearTimeout(locInputTimeout);
locInputTimeout=setTimeout(函数(){initAutocomplete()},2000);
};
函数initAutocomplete(){
var autocomplete=new google.maps.places.autocomplete(输入);
setComponentRestrictions({'country':['my']});
警惕(“我在这里!”);
}
'https://maps.googleapis.com/maps/api/js?key=&libraries=places“,

在我看来,您想要实现的是将谷歌搜索输入中的位置预测延迟两秒。 如本文所述,目前没有办法做到这一点

就您的方法而言,您的脚本实际上做的是在触发事件两秒钟后对您的输入设置一个“自动完成器”,如您所见,仅当您的输入值发生更改时才会触发自动完成,但它不知道何时将其附加到已具有值的元素,这就是为什么在步骤3中,虽然显示了警报,但表单不会自动完成

我尝试使用以下脚本手动触发另一个中的
keyup
事件:

locInputTimeout = setTimeout(function(){initAutocomplete()},2000);

function initAutocomplete() {
    var autocomplete = new google.maps.places.Autocomplete(input);
    var currentValue=input.value
    autocomplete.setComponentRestrictions({'country': ['my']});
    input.value='';
    input.value=currentValue;
    input.focus();
}
然而,由于某种原因,我不能让它工作。希望你能从那里继续。
我的建议是,你依靠gmaps内部机制来决定何时重新运行自动完成,因为他们可能使用了更好的启发式方法,而且根据这一点,设置自动完成的初始值不是一项普通的任务。

最简单的方法是使用“去盎司”或“节流”,查阅这些概念:-)谢谢你的答案和你提到的小提琴。我一定会尽快试一试,如果成功的话,我会回来找你;)