Fer*_*mux 2 javascript jquery google-maps google-maps-api-3
我在我的网页上使用Google Maps API v3,当前加载页面时,搜索框会预先填充我选择的搜索字词.但我需要它实际上然后使用该术语搜索地图.我似乎无法使用谷歌的API找到任何方法,所以我想也许我可以使用此代码模拟"输入"键按下:
var e = jQuery.Event("keydown");
e.which = 13;
$("#pac-input").trigger(e);
Run Code Online (Sandbox Code Playgroud)
(#pac-input是<input>地图上标签的ID )
然而,这似乎不起作用.
那么如何强制搜索页面加载?
编辑:
这是我正在谈论的搜索框

您必须考虑的第一件事是不必触发哪个事件,知道何时触发事件更为重要.
预测将以异步方式加载,因此您必须等到它们可用.当预测可用时,不会触发任何事件,但您可能会观察到DOMNodeInserted身体的事件(将在那里插入下拉列表)并检查节点是否具有className'pan-item'(它是项目的className)在下拉列表中).
然后必须在输入上触发这些事件:
keydown 使用keyCode:40(移至下拉列表中的第一个预测)keydown 使用keyCode:13(选择/激活预测)focus
(激活输入)keydown 使用keyCode:13(发送请求)例:
var input = document.getElementById('pac-input'),
ac = new google.maps.places.SearchBox(input),
itemsloaded = google.maps.event
.addDomListener(document.body,
'DOMNodeInserted',
function(e){
if(e.target.className==='pac-item'){
//remove the listener
google.maps.event.removeListener(itemsloaded);
//trigger the events
google.maps.event.trigger( input, 'keydown', {keyCode:40})
google.maps.event.trigger( input, 'keydown', {keyCode:13})
google.maps.event.trigger( input, 'focus')
google.maps.event.trigger( input, 'keydown', {keyCode:13})
}
});
Run Code Online (Sandbox Code Playgroud)
注意:在InternetExplorer中,DOMNodeInserted自V9以来支持-event,在旧版本和其他不支持此事件的浏览器中,如果.pac-item文档中存在,则可以间隔检查.
演示:http://jsfiddle.net/doktormolle/R8XdL/
| 归档时间: |
|
| 查看次数: |
2989 次 |
| 最近记录: |