gpt4 book ai didi

javascript - Google Place Autocomplete Address API 强制 HTML Autocomplete = Off

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:58 27 4
gpt4 key购买 nike

我们有一个标准的地址表格(街道 1、街道 2、城市、州、邮政编码、国家/地区)。

当我在 Street 1 添加 Google Places Autocomplete API 的代码时,它会在加载页面时自动将输入字段的自动完成更改为关闭,这使得 HTML/浏览器自动填充在 Street 1 上不起作用。

<input autocomplete="address-line1" type = "text" name = "shipping_address_1" id = "shipping_address_1"   class="ct-required form-control" tabindex=7>

关于如何纠正这个问题的任何想法;为什么 Google Place Autcomplete API 会将字段更改为 autocomplete='off'

我曾尝试将 Google javascript 变量“autocomplete”修改为“autocomp”,认为它与此有关,但结果仍然相同。

      var placeSearch, autocomp;
var componentForm = {
shipping_address_1: 'short_name',
shipping_address_2: 'long_name',
shipping_city: 'long_name',
shipping_state: 'short_name',
shipping_country: 'long_name',
shipping_zip: 'short_name'
};



function initAutocomplete() {
// Create the autocomplete object, restricting the search to geographical
// location types.
autocomp = new google.maps.places.Autocomplete(
/** @type {!HTMLInputElement} */(document.getElementById('shipping_address_1')),
{
types: ['geocode'],
componentRestrictions: {country: "us"}
});

// When the user selects an address from the dropdown, populate the address
// fields in the form.
autocomp.addListener('place_changed', fillInAddress);
}

function fillInAddress() {
// Get the place details from the autocomplete object.
var place = autocomp.getPlace();
//debug autofillinplaes
console.log(place);


for (var component in componentForm) {
document.getElementById(component).value = '';
document.getElementById(component).disabled = false;
}

if (place.address_components) {
// Get each component of the address from the place details
// and fill the corresponding field on the form.

var components_by_type = {};

for (var i = 0; i < place.address_components.length; i++) {
var addressType = place.address_components[i].types[0];
var c = place.address_components[i];
components_by_type[c.types[0]] = c;

}
var streetnumb = components_by_type['street_number'].short_name;

var address1 = streetnumb+" "+components_by_type['route'].long_name;
document.getElementById('shipping_address_1').value = address1;

var locality = components_by_type['locality'].long_name;
document.getElementById('shipping_city').value = locality;

var administrative_area_level_1 = components_by_type['administrative_area_level_1'].short_name;
document.getElementById('shipping_state').value = administrative_area_level_1;

var country = components_by_type['country'].short_name;
document.getElementById('shipping_country').value = country;

var postal_code = components_by_type['postal_code'].short_name;
document.getElementById('shipping_zip').value = postal_code;
... [DO ADDRESS VALIDATION, UPDATE INPUT FIELDS] ...}

最佳答案

autocomp = new google.maps.places.Autocomplete(
document.getElementById('shipping_address_1')),
{
types: ['geocode'],
componentRestrictions: {country: "us"}
});

通过编写上面的代码,您告诉 GMaps 这是您需要预测地点的字段。它有点像地点的搜索栏,任何类型的搜索栏都不会自动完成。如果它由浏览器自动填充,那将没有任何意义。

如果您希望采用这种方式,请使用 WebService API,发送 HTTP 请求并用其响应填充字段。

来自文档,对以加利福尼亚州旧金山为中心的区域内包含字符串“Amoeba”的企业的请求:https://maps.googleapis.com/maps/api/place/autocomplete/xml?input=Amoeba&types=establishment&location=37.76999,-122.44696&strictbounds&key=YOUR_API_KEY使用查询参数 input=Paris&types=geocode 对上述 URL 的 GET 请求将提供包含预测的 JSON 对象。

{
"status": "OK",
"predictions" : [
{
"description" : "Paris, France",
"id" : "691b237b0322f28988f3ce03e321ff72a12167fd",
"matched_substrings" : [
{
"length" : 5,
"offset" : 0
}
],
... more results
]
}

关于javascript - Google Place Autocomplete Address API 强制 HTML Autocomplete = Off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com