javascript - getPlace() 为动态添加的文本输入给出 Undefined

标签 javascript jquery google-maps google-maps-api-3 google-places-api

我在点击和输入更改事件时动态添加了一个文本输入,我需要获取 google api getPlace() 值。

按回车键时效果很好,但是当我从鼠标中选择mouseclick时,place_changed事件给出了未定义的位置

<强> JS FIDDLE DEMO

<div id="clkDIv">CLICK ME</div>
<br>
<div id="contentDiv"></div>
<小时/>
var defaultBounds = new google.maps.LatLngBounds(new google.maps.LatLng(-33.8902, 151.1759), new google.maps.LatLng(-33.8474, 151.2631));
    $("#clkDIv").on('click', function () {
        var txtEl = "<input id='txtDynamic'  type='text' />";
        $("#contentDiv").append(txtEl);
    });

    $("#contentDiv").on('input', '#txtDynamic', function () {
        $myInput = $(this);
        var options = {
            bounds: defaultBounds,
            types: ['geocode']
        };
        autocomplete = new google.maps.places.Autocomplete($myInput.get(0), options);
        google.maps.event.addListener(autocomplete, 'place_changed', function () {
            var place = autocomplete.getPlace();
            console.log(place);
        });
    });

最佳答案

自动完成place_changed事件监听器已经负责监听Enter按键点击,所以你可以用其他方式来做周围。

  1. 动态添加您的输入
  2. 将自动完成功能绑定(bind)到您的输入(添加后)

这是代码:

$(document).ready(function () {

    $("#clkDIv").on('click', function () {
        var txtEl = "<input id='txtDynamic'  type='text' />";
        $("#contentDiv").append(txtEl);

        bindAutocomplete();
    });
});

function bindAutocomplete() {

    var defaultBounds = new google.maps.LatLngBounds(new google.maps.LatLng(-33.8902, 151.1759), new google.maps.LatLng(-33.8474, 151.2631));

    var options = {
        bounds: defaultBounds,
        types: ['geocode']
    };

    var autocomplete = new google.maps.places.Autocomplete(document.getElementById('txtDynamic'), options);

    google.maps.event.addListener(autocomplete, 'place_changed', function () {
        var place = autocomplete.getPlace();
        console.log(place);
    });
}

这是更新的 fiddle :

JSFiddle demo

关于javascript - getPlace() 为动态添加的文本输入给出 Undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26904189/

相关文章:

javascript - 在php中从数据库中获取值并将其存储在js文件中的数组中

javascript - 未能 "dynamically"导入 date-fns/locale 库 - TypeScript 给出尝试导入错误

javascript - Jquery 复选框功能向后

ios - 来自 URL 的 UIImage(谷歌地图)

javascript - AngularJS 中的 "track by"是什么?它是如何工作的?

javascript - 当我在 ui.R 文件中定义了所有元素时,如何将 Google map 添加到 Shiny 应用程序?

c# - JavaScript - 转义 JavaScript 对象属性值中的单引号

javascript - 使用 $.post 回调生成 html 后未注册事件

c# - 地址自动补全 API

android - 在Android中获取可见 map 的半径