如何停止使用谷歌地方填充自动填充的地址

所以我在我的一个表格上有一个谷歌地图自动完成,当它到达一个地方时,它取代了地方并格式化它,以便所有正确的信息进入表格上的不同输入。

我遇到的问题是在’place_changed’事件触发自动完成之前填充输入。 我想防止这个初始人口,而是填充我想要的东西。

我尝试做一个改变事件,但它似乎没有正确启动。 这是我的代码:

HTML:

<input type="text" name="address1" value="1255 W Washington St" required="" class="form-control" id="id_address1" placeholder="Enter a location" autocomplete="var input = /** @type {HTMLInputElement} */( 

JS:

 document.getElementById('id_address1')); var autocomplete = new google.maps.places.Autocomplete(input); google.maps.event.addDomListener(input, 'keydown', function(e) { if (e.keyCode == 13) { e.preventDefault(); console.log('enter'); } }); google.maps.event.addDomListener(input, 'focusout', function(e) { if ($('#id_address1').val() != $('#id_address1').attr('value')){ $('#id_address1').val($('#id_address1').attr('value')); } });off" google.maps.event.addListener(autocomplete, 'place_changed', function() { var place = autocomplete.getPlace(); if (place.address_components) { var address = ''; for (var i = 0; i < place.address_components.length; i++){ switch (place.address_components[i].types[0]){ case 'street_number': address = place.address_components[i].short_name; break; case 'route': address += ' ' + place.address_components[i].short_name; break; case "locality": $('#id_city').val(place.address_components[i].short_name); break; case "administrative_area_level_1": $('#id_state').val(place.address_components[i].short_name); break; case "country": $('#id_country').val(place.address_components[i].short_name); break; case "postal_code": $('#id_zip_code').val(place.address_components[i].long_name); break; } } $('#id_address1').val(address); $('#id_address1').attr('value', address); } 

现在,当设置attr然后检查焦点是一种解决方法时,因为当我仅使用键盘选择一个地方时,它会尝试输入原始的完整字符串。

在设置值之前触发blur-event:

 $('#id_address1').trigger('blur').val(address);