【发布时间】:2021-08-31 15:01:43
【问题描述】:
我希望 Google 地点自动完成选择列表在我单击选择列表外部时不隐藏,以便结果保持可见。
示例视频
示例视频,其中通过单击选择列表之外的方式关闭了选择列表:
https://vimeo.com/563347070
检查元素
在 Google Inspect Element 工具中可以看到 pac-container 在点击外部选择列表时获取样式display: none;:
https://vimeo.com/563350922
HTML
<div class="content">
<div id="search-container">
<a class="icon-container"><img src="./Sources/Icons/arrow-back-outline.svg" id="backbtn" /></a>
<form action="#" method="post" class="searchfield">
<label for="userAddress">
<input name="userAddress" id="searchfield" type="text" placeholder="where do you want to go?" value="" onfocus="this.value = this.value;"/>
</label>
</form>
<a class="icon-container"><img src="./Sources/Icons/close-circle-outline.svg" id="emptybarbtn" /></a>
</div>
<div id="resultAutocompletePlaces"></div>
<button id="checkUserLocation">Current location</button>
</div>
</div>
Javascript
function initializePlacesService() {
//initialize places service to perform TextSearch
var input = document.getElementById('searchfield');
var options = {
types: []
};
autocomplete = new google.maps.places.Autocomplete(input, options);
//places pac-container inside #resultAutocompletePlaces div
setTimeout(function(){
$(".pac-container").prependTo("#resultAutocompletePlaces");
}, 300)
};
$(function(){
initializePlacesService();
});
问题
如何确保在选择列表外部单击时不隐藏?
【问题讨论】:
-
你从哪里得到
.pac-container? -
可以调试一个元素的变化,在元素中右键->中断->属性修改。我的意思是在检查员中。
-
感谢您的考虑。如果我按照您的步骤操作,下面的行会亮起:
Kla=function(a,b,c,d){for(var e=c.length;0<=(b=a.indexOf(c,b))&&b<d;){var f=a.charCodeAt(b-1);if(38==f||63==f)if(f=a.charCodeAt(b+e),!f||61==f||38==f||35==f)return b;b+=e+1}return-1};_.Nla=function(a,b){for(var c=a.search(Lla),d=0,e,f=[];0<=(e=Kla(a,d,b,c));)f.push(a.substring(d,e)),d=Math.min(a.indexOf("&",e)+1||c,c);f.push(a.substr(d));return f.join("").replace(Mla,"$1")};_.ru=function(a,b){_.Fm.Td?a.nodeValue=b:a.textContent=b};_.su=function(a,b){a.style.display=b?"":"none"}; -
放入调用栈。
-
不要试图破解小部件的行为,因为它将是一种破解。如果您想要自定义行为,请使用
AutocompleteServiceclass 并使用自定义行为构建您自己的小部件。
标签: javascript google-places-api google-places googleplacesautocomplete