首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何清除绑定到Google Places自动完成的输入?

如何清除绑定到Google Places自动完成的输入?
EN

Stack Overflow用户
提问于 2013-01-18 00:49:38
回答 7查看 25.2K关注 0票数 25

这是我的问题:我正在使用Google Places Autocomplete从用户那里收集关于地点的信息。

在事件"place_changed“中,我保存了这个信息。然而,我想给用户添加多个地方的可能性。所以在这个地方被保存之后,我想要清除输入。

但是,Google Autocomplete会自动替换输入字段中的最后一项。不管怎么说,要摆脱它?

详细信息:

代码语言:javascript
复制
var inputDiv = $('#myinput');
var options = {
  types: ['(cities)']
};
var autocomplete = new google.maps.places.Autocomplete(inputDiv[0], options);

google.maps.event.addListener(autocomplete, 'place_changed', function() {
    var places = autocomplete.getPlace();
    savePlaces(places);

    console.log(inputDiv.val()); // 'Paris, France'
    inputDiv.val('');
    console.log(inputDiv.val()); // (an empty string)

    setTimeout(function() {
        console.log(inputDiv.val()); // 'Paris, France' (It's back!)
        inputDiv.val('');
        console.log(inputDiv.val()); // (an empty string)      
    }, 1);

    setTimeout(function() {
        console.log(inputDiv.val()); // (an empty string)      
    }, 10);
}

你会告诉我,这看起来很好,只要在超时时清除它。但是当我离开输入的时候(它失去了焦点)。最后一个条目又回来了!

有什么办法解决这个问题吗?我还没有在Google文档中找到像这样的函数

代码语言:javascript
复制
autocomplete.clear();

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-01-18 09:42:45

看起来autocomplete在内部监听输入的blur-event,所以让我们给它一些东西来监听,并在那之后清除字段:

代码语言:javascript
复制
inputId_div.blur();    
setTimeout(function(){
 inputId_div.val('')
 inputId_div.focus();},10);
票数 18
EN

Stack Overflow用户

发布于 2016-07-06 18:17:28

要清除您可以使用的位置:

代码语言:javascript
复制
autocomplete.set('place',null);

它还会触发place_change事件。

票数 11
EN

Stack Overflow用户

发布于 2013-11-15 07:28:43

前一项保留在autocomplete对象中。

解决方案:清除输入框,然后创建一个新的自动完成对象。还要确保删除以前的事件侦听器。

声明:

代码语言:javascript
复制
var input = document.getElementById('autocomplete');
var autocomplete;
var autocompleteListener;
var onPlaceChange = function() {...};

var initAutocomplete = function() {
  autocomplete = new google.maps.places.Autocomplete(input);
  autocompleteListener = google.maps.event.addListener(autocomplete, 'place_changed', onPlaceChange);
};

要清除,请执行以下操作:

代码语言:javascript
复制
input.value = "";
google.maps.event.removeListener(autocompleteListener);
initAutocomplete();

前一个自动完成对象应该是垃圾回收的。如果我说错了,请纠正我。要确保暴露内存泄漏,可以手动将其删除。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14384004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档