2015-01-21 53 views
3

根据Google自动完成Places API文档,getPlace()调用应返回一个包含所有位置数据的Places对象,或者如果该位置不存在(即 - 用户忽略了这些建议),它应该返回一个只包含Places对象的名称元素的存根(stub)。但是,只有当用户点击ENTER时,才会执行后面的操作,而不是在TAB离开该字段时。Google Autocomplete Places API无法通过TAB更改触发事件

我试着看着更改事件,keyup,keydown事件。我试着用密钥13模糊等触发一个keydown事件等。似乎没有任何工作。

有没有人克服过这个问题?似乎很明显,用户会通过表单进行选择,并且总是有可能忽略这些建议。

+0

你应该总是发布你的代码或者你尝试编码的东西。 – MrUpsidown 2015-01-21 07:55:18

回答

5

pac-input是你的地方搜索输入,你可以做到以下几点:

// Trigger search on blur 
document.getElementById('pac-input').onblur = function() { 

    google.maps.event.trigger(this, 'focus'); 
    google.maps.event.trigger(this, 'keydown', { 
     keyCode: 13 
    }); 
}; 

或者用谷歌地图事件侦听器:

// Trigger search on blur 
google.maps.event.addDomListener(document.getElementById("pac-input"), 'blur', function() { 

    google.maps.event.trigger(this, 'focus'); 
    google.maps.event.trigger(this, 'keydown', { 
     keyCode: 13 
    }); 
}); 
+0

谢谢@MrUpsideDown。对不起,没有发布代码,当时没有在我的电脑上。后者的选择效果更好。尝试addListener,但忘记了addDomListener。再次感谢! – afithings 2015-01-21 15:26:49

+3

请注意,这与用户单击下拉菜单中的项目混淆。 – 2015-10-17 02:05:30

1

下扩大对@ MrUpsideDown的解决方案,但尽量避免当用户点击下拉列表中的项目时与用户混淆,因为mentioned by @Jkk.jonah

// Trigger search on blur 
google.maps.event.addDomListener(document.getElementById("pac-input"), 'blur', function() { 
    if (jQuery('.pac-item:hover').length === 0) { 
    google.maps.event.trigger(this, 'focus'); 
    google.maps.event.trigger(this, 'keydown', { 
     keyCode: 13 
    }); 
    } 
}); 
+0

最佳答案迄今为止,我对这个问题有所有威胁。我已经处理了几个星期,并没有找到和优雅的解决方案,这似乎完美的工作! – 2018-03-01 12:52:35