Google地图自动填充功能 - 如果未选择任何内容,则清除输入

时间:2016-08-08 18:56:25

标签: javascript jquery autocomplete

我正在使用谷歌地图自动完成脚本,它的工作正常,但如果用户没有从下拉列表中选择任何人,如何清除输入?

例如: 现在的情况: 用户输入“新建”并在列表中看到“纽约”,但不要选择它(点击输入之外的任何地方),现在intup的值为“新”。 我想要: 用户输入“新建”并在列表中看到“纽约”,但不要选择它(单击输入外的任何位置),现在intup具有空值,因为列表中没有任何内容未被选中。

我目前的代码:

   <input id="autocomplete2" placeholder="Enter your address" onFocus="initAutocomplete2()" type="text">
<script>
    function initAutocomplete2() {
      autocomplete2 = new google.maps.places.Autocomplete(
          /** @type {!HTMLInputElement} */(document.getElementById('autocomplete2')),
          {types: ['(cities)']});

   }
</script>

2 个答案:

答案 0 :(得分:8)

您需要有一个变量来保存选择值的事实,然后当有人聚焦/模糊输入时 - 如果需要,重置输入的值。

以下是一个例子:

&#13;
&#13;
var selected = false;

function initAutocomplete2() {
  autocomplete2 = new google.maps.places.Autocomplete(
    /** @type {!HTMLInputElement} */(document.getElementById('autocomplete2')),
    {types: ['(cities)']});
  
  autocomplete2.addListener('place_changed', function() {
    selected = true
  });
}
$('#autocomplete2').on('focus', function() {
  selected = false;
  }).on('blur', function() {
    if (!selected) {
      $(this).val('');
    }
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<input id="autocomplete2" placeholder="Enter your address" onFocus="initAutocomplete2()" type="text">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我找到了一种对我来说似乎更好的方式,你可以定义一个旧的价值&#34;只会改变&#34; place_changed&#34;打回来。 然后,&#34;模糊&#34;事件你应该用最后一个选择的值(或初始值)重新填充值。 这样,字段值是一致的,它是空的或有效的选择值。

  oldaddress = $("input[name='address']").val();

  $("input[name='address']").on('blur', function() {
      $(this).val(oldaddress);
  });

  function initAutocomplete() { autocomplete = new google.maps.places.Autocomplete(document.getElementById('address'), { types: [(cities)] });
      autocomplete.addListener('place_changed', fillInAddress);
  }

  function fillInAddress() {
      var place = autocomplete.getPlace();
      ....
      oldaddress = $("input[name='address']").val(); 
  }