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

时间:2013-01-11 06:03:11

标签: 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!');});
谷歌图书馆显然会吃掉这些活动。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:8)

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

  1. 当用户选择地点时,存储地点和输入的文本值
  2. 当表单提交时,检查输入的值是否与您保存的值相同
  3. 如果不同,或者没有保存地点,则执行手动放置请求
  4. 演示: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;
    }
    

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

    我希望这可以帮到你!