如何判断谷歌放置自动填充建议的时间没有使用?

bet*_*ust 12 javascript jquery google-maps-api-3 google-places-api google-places

精简版:

我正在使用谷歌地方图书馆中的谷歌自动填充地点(这里是https://developers.google.com/maps/documentation/javascript/places),我需要告诉用户何时从自动完成列表中选择了一个地点当他们点击其他地方,标签出来等等

我的目标是当用户与输入元件相互作用但并运行一个功能选择自动完成选项.

更多细节:

在查看文档时,似乎唯一的事件是在(实际上,如果)地点发生变化时触发,这发生在(可能很长的)服务器往返之后.如果用户未从列表中选择任何内容,则永远不会触发该事件.(https://developers.google.com/maps/documentation/javascript/reference?hl=fr#Autocomplete上的文档 )

我可以为自动完成程序附加的输入元素附加一个监听器到blur事件,但问题是blur事件发生在places_changed事件发生之前.

到目前为止,已经尝试了许多方法,包括使用以下内容监听自动完成建议上的事件:

$('body').on('click', '.pac-item', function(){alert.log('yay!');});
Run Code Online (Sandbox Code Playgroud)

谷歌图书馆显然吃了这些活动.

任何帮助将不胜感激.

谢谢!

Rob*_*odd 8

您应该检查表单提交的时间,而不是使用事件进行检查.这是一步一步:

  1. 当用户选择一个地点时,存储地点和输入的文本值
  2. 表单提交时,检查输入的值是否与您保存的值相同
  3. 如果不同,或者没有保存位置,则执行手动放置请求

演示:http://jsfiddle.net/robertdodd/FSRd8/7/

我在上面放了一个小的演示.我所做的是将验证方法附加到表单.此方法将在提交表单之前检查数据,如果需要,请先执行手动查找.

function validateForm() {
    searchfield = $('#searchfield').val();
    if (searchfield == "" || searchfield == null) { 
        // No text entered
    } else if (place && searchfield == placesearch) { 
        // Success
        return true;
    } else { 
        // place info and search text do not match, perform manual lookup   
        // when lookup is complete, the callback function will store the place info
        // and resubmit the form
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这只是发生了什么的概述,如果您希望看到它,所有代码都在演示中.

我希望这可以帮助你!