Как включить API автозаполнения Google на клонированных элементах? - PullRequest
0 голосов
/ 13 января 2020

У меня уже есть несколько полей в форме, в которые включен API поиска Google. если форма отображается при загрузке страницы, она работает нормально. У меня есть некоторые поля в форме, которые я клонирую по нажатию кнопок. Эти поля формы также имеют API автозаполнения, но он не работает с этими API.

Вот мой jquery код, который я использую для вызова API Google

var autocomplete = {};
var autocompletesWraps = ['business_collections', 'exTab2', 'company_officer_details'];
var exTab2_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };
var business_collections_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };

var company_officer_details_form = { street_number1: 'short_name', route1: 'long_name', locality1: 'long_name', administrative_area_level_11: 'short_name', country1: 'long_name', postal_code1: 'short_name' };

function initialize() {

$.each(autocompletesWraps, function(index, name) {

    if($('#'+name).length == 0) {
        return;
    }

    autocomplete[name] = new google.maps.places.Autocomplete($('#'+name+' .autocomplete')[0], { types: ['geocode'] });
    autocomplete[name].setComponentRestrictions({'country': ['au']});   
    google.maps.event.addListener(autocomplete[name], 'place_changed', function() {

        var place = autocomplete[name].getPlace();
        var form = eval(name+'_form');

        for (var component in form) {
            $('#'+name+' .'+component).val('');
            $('#'+name+' .'+component).attr('disabled', false);
        }

        for (var i = 0; i < place.address_components.length; i++) {
            var addressType = place.address_components[i].types[0];
            if (typeof form[addressType] !== 'undefined') {
              var val = place.address_components[i][form[addressType]];
              $('#'+name+' #'+addressType).val(val);
            }
        }
    });
});
}

В вышеприведенном коде все работает в business_collections, exTab2, которые предопределено на странице и загружается при загрузке страницы, но она не работает с company_officer_details, который не создается при загрузке страницы, но является клонированным элементом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...