Google自动填写公寓号码

HWD*_*HWD 6 autocomplete google-maps-api-3 street-address

当用户将公寓号添加到他们的地址时,自动填充似乎认为它正在查看邮政编码,并更改建议的匹配:

6250 Hollywood Boulevard#20

有没有办法让这个工作,或者如果没有,一种方法来忽略公寓号码并将其与表单提交一起作为单独的值发送?(请记住,用户可能会使用#,Unit,Apt等来定义其单位编号)

var placeSearch, autocomplete;

var componentForm = {
    street_number:                  'short_name',
    route:                          'short_name',
    locality:                       'long_name',
    administrative_area_level_1:    'short_name',
    country:                        'long_name',
    postal_code:                    'short_name'
};

function initialize(){

    autocomplete = new google.maps.places.Autocomplete(
        (document.getElementById('autocomplete-address')),
        { types: ['geocode'] });
        google.maps.event.addListener(autocomplete, 'place_changed', function(){
            fillInAddress();
        }
    );

}

function fillInAddress(){

    var place = autocomplete.getPlace();

    for(var component in componentForm){

        document.getElementById(component).value = '';
        document.getElementById(component).disabled = false;

    }

    for(var i = 0; i < place.address_components.length; i++){

        var addressType = place.address_components[i].types[0];

        if(componentForm[addressType]){

            var val = place.address_components[i][componentForm[addressType]];

            document.getElementById(addressType).value = val;

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

kah*_*aho 2

似乎不存在将自动完成 API 设置为忽略 apt 编号的设置,但是,我们可以在将字符串传递给 API 之前修剪文本。

在你的 中autocomplete = new google.maps.places.Autocomplete(,你可以这样做:

document.getElementById('autocomplete-address').replace(/#.*/g,"");
Run Code Online (Sandbox Code Playgroud)

由于document.getElementById('autocomplete-address')返回一个字符串,我们可以将#numberpaer 替换为空字符串.replace(/#.*/g,"")