【问题标题】:Google Api not working on appended inputGoogle Api 无法处理附加输入
【发布时间】:2016-02-27 05:12:25
【问题描述】:

背景:

我正在尝试将 google 地址搜索添加到在线店面。我无权访问网站的实际 html,但我可以在页眉、页脚中输入代码,并包含我想要的任何 css 或 js 页面。我一开始一切正常。我在标题中有输入,并且能够搜索地址。

创建者:

所以在我的代码工作后,是时候将输入与其他地址输入一起向下移动了。我想使用 javascript 根据父 ID 将此输入附加到 div 中。所以我用这段代码做到了这一点:

window.onload = function () {
    var input = document.createElement('div');
    input.setAttribute("id", "locationField");
    input.innerHTML = '<input id="autocomplete" placeholder="Enter your address" onfocus="geolocate()" type="text" autocomplete="off">';

    var form = document.getElementById('NameAdd');
    form.insertBefore(input, form.firstChild);
};

这是由谁制作的:

现在我以这种方式包含输入,它不会显示谷歌结果。检查页面元素时,一切看起来都很好。我做错了什么?

【问题讨论】:

标签: javascript html google-maps google-api


【解决方案1】:

google.maps.places.Autocomplete 构造函数采用 &lt;input&gt; 元素,而不是 &lt;div&gt;

这对我有用:

window.onload = function() {
  var inputDiv = document.createElement('div');
  inputDiv.setAttribute("id", "locationField");

  // create input element dynamically so don't need to wait for it to render
  var input = document.createElement('input');
  input.setAttribute("id", "autocomplete");
  input.setAttribute("placeholder", "Enter your address");
  input.setAttribute("type", "text");
  input.setAttribute("autocomplete", "off");
  inputDiv.appendChild(input);

  var form = document.getElementById('NameAdd');
  form.insertBefore(input, form.firstChild);
  var autocomplete = new google.maps.places.Autocomplete(input);
};
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<form id="NameAdd">
  <br />
  <input id="Name" value="name" />
  <input id="Address" value="address" />
</form>

【讨论】:

  • 我刚刚尝试过,我能够获得搜索结果,但现在我的输入不再填充。我附上了代码。 @geocodezip
  • 这不是原始问题的一部分。
  • 我已将您的答案标记为解决方案,因为它确实有效。我弄清楚发生了什么。将输入附加到页面后,我不得不回忆我的一个功能
  • 我回滚了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多