【问题标题】:Bind google address autocomplete api on dynamically create input在动态创建输入时绑定谷歌地址自动完成api
【发布时间】:2017-08-04 05:13:55
【问题描述】:

基本上我正在创建动态字段,例如使用 jquery 可能有 10 个字段。我想在所有 10 个动态创建的字段上添加谷歌地址自动完成功能。但是这段代码不起作用。

var html += '<div class="form-group">';
html += '<label class="control-label">'+field.label+'</label>';
html += '<input class="form-control address-auto-complete" 

name="'+field.name+'[]" type="text" />';
html += '</div>';
$('#load-case-fields').html(html);
var a = new google.maps.places.Autocomplete($('.address-auto-complete'));

我在上面的代码中遇到了这个错误。 InvalidValueError: not an instance of HTMLInputElement

【问题讨论】:

    标签: jquery html autocomplete google-places-api google-geolocation


    【解决方案1】:

    $('.selector') 给你一个 jquery 元素,但你想要底层的输入,所以试试 $('.asd')[0] 或使用纯 JavaScript

    var input = document.getElementById('yourInput');
    var autocomplete = new google.maps.places.Autocomplete(input);
    

    【讨论】:

      【解决方案2】:

      你可以用纯JS试试

      Fiddle演示

      function initialize() {
      
        parentDiv = document.getElementById('variable');
        for (var i = 0; i < 10; i++) { //dynamically create 10 inputs
          var formGroupDiv = document.createElement('div')
          formGroupDiv.classList.add('form-group')
          parentDiv.appendChild(formGroupDiv)
          var labels = document.createElement('label')
          labels.classList.add('control-label')
          labels.innerHTML = 'LABEL ' + i
          formGroupDiv.appendChild(labels)
          var input = document.createElement('input');
          input.classList.add('form-control', 'address-auto-complete')
          input.setAttribute('placeholder', "Enter your address")
          input.setAttribute('type', "text")
          formGroupDiv.appendChild(input)
        }
        var variableAuto = document.getElementsByClassName('address-auto-complete');
        for (var j = 0; j < variableAuto.length; j++) { //dynamically initialize autocomplete to input elements
          new google.maps.places.Autocomplete(
            (variableAuto[j]), {
              types: ['geocode']
            });
        }
      
      }
      
      initialize();
      <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <div class="col-sm-12" id="variable">
      
      </div>
      
      <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-12
        • 2014-08-14
        • 2017-04-25
        • 2016-11-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        相关资源
        最近更新 更多