谷歌商家信息自动填充动态输入 [英] Google Places Autocomplete on dynamic inputs

查看:225
本文介绍了谷歌商家信息自动填充动态输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

美好的一天。

我想补充谷歌自动完成地方使用低于code动态创建的输入:

I'm trying to add Google Places Autocomplete on dynamically created inputs using code below:

<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
var _autoComplCounter = 0;

function assignAutoCompl(_id)
{
    var _autocomplete = new google.maps.places.Autocomplete(document.getElementById(_id));
    _autocomplete.setTypes(['geocode']);
    google.maps.event.addListener(_autocomplete, 'place_changed', function()
    {
        //processing code
    });
}

function CreateElem()
{
    var _id = "AutoCompl" + _autoComplCounter;
    _autoComplCounter++;

    var container = document.getElementById('AutoComplInputs');
    container.innerHTML += "<br>" + _id;

    var _elem_for_upd = document.createElement("input");
    _elem_for_upd.type = "text";
    _elem_for_upd.id = _id;
    container.appendChild(_elem_for_upd);

    assignAutoCompl(_id);
}
</script>
</head>
<body>
    <div id="AutoComplInputs"></div>
    <input type='button' value='Add' onclick='CreateElem();'>
</body>
</html>

但是,当我美元按钮p $ PSS,自动完成仅去年投入,以及所有prevoius会断裂。我认为,它可以连接到动态创建的输入,下面的code正常工作:

But when I press on button, autocomplete works only on last input, and all prevoius become broken. I think that it can be connected to dynamic creation of inputs, as the code below works fine:

<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
var _autoComplCounter = 0;

function assignAutoCompl(_id)
{
    document.getElementById(_id).hidden = false;
    var _autocomplete = new google.maps.places.Autocomplete(document.getElementById(_id));
    _autocomplete.setTypes(['geocode']);
    google.maps.event.addListener(_autocomplete, 'place_changed', function()
    {
        //processing code
    });
}

function CreateElem()
{
    assignAutoCompl("AutoCompl0");
    assignAutoCompl("AutoCompl1");
}
</script>
</head>
<body>
    <div id="AutoComplInputs">
        <input id="AutoCompl0" type="text" hidden>
        <input id="AutoCompl1" type="text" hidden>
    </div>
    <input type='button' value='Add' onclick='CreateElem();'>
</body>
</html>

我不明白我在做什么错...

I don't understand what I'm doing wrong ...

推荐答案

不要使用的innerHTML 将内容添加到容器,你将失去势必现有元素的所有处理。

Don't use innerHTML to add content to container, you will lose all handlers bound to existing elements.

使用的appendChild来代替:

Use appendChild instead:

container.appendChild(document.createElement('br'));
container.appendChild(document.createTextNode(_id));

这篇关于谷歌商家信息自动填充动态输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆