以下是Google自动填充的设置:
<script type="text/javascript">
function initialize() {
var from1_input = document.getElementById('autocomplete_from1'); // website.com/page1
var to1_input = document.getElementById('autocomplete_to1'); // website.com/page1
var from2_input = document.getElementById('autocomplete_from2'); // website.com/page2
var to2_input = document.getElementById('autocomplete_to2'); // website.com/page2
var autocomplete_from1_input = new google.maps.places.Autocomplete(from1_input); // website.com/page1
var autocomplete_to_1_input = new google.maps.places.Autocomplete(to1_input); // website.com/page1
var autocomplete_from2_input = new google.maps.places.Autocomplete(from2_input); // website.com/page2
var autocomplete_to2_input = new google.maps.places.Autocomplete(to2_input); // website.com/page2
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
问题是表单位于 / page1 上运行良好,但在 / page2 上,自动填充功能无效。
我尝试删除 page1 的javascript,Google自动填充功能正常,因此这意味着自动填充功能正在 page1 上运行或者在 page2 上,但不幸的是现在两者都在。
ID正确无误。
为什么?谷歌有没有限制,还是忽视了什么?
谢谢你们。
修改
<%= javascript_include_tag "https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places,geometry" %>
包含在标题中。
答案 0 :(得分:0)
因此,您有一个包含输入#autocomplete_from1
和#autocomplete_to1
的网页以及另一个包含输入#autocomplete_from2
和#autocomplete_to2
的网页?
浏览器在发生错误时停止脚本执行,当您在第2页时,错误发生在此处:
var autocomplete_from1_input = new google.maps.places.Autocomplete(from1_input);
...因为输入不存在,所以不会执行以下语句。
您必须避免此错误。有不同的可能解决方案,例如一个try / catch-statement
function initialize() {
//try to run the code for page1
try{
var from1_input = document.getElementById('autocomplete_from1');
var to1_input = document.getElementById('autocomplete_to1');
var autocomplete_from1_input = new google.maps.places.Autocomplete(from1_input);
var autocomplete_to_1_input = new google.maps.places.Autocomplete(to1_input);
}
//in case of an error run code for page2
catch(e){
var from2_input = document.getElementById('autocomplete_from2');
var to2_input = document.getElementById('autocomplete_to2');
var autocomplete_from2_input = new google.maps.places.Autocomplete(from2_input);
var autocomplete_to2_input = new google.maps.places.Autocomplete(to2_input);
}
}