нацелить элемент на всплывающее окно, которое еще не в дом - PullRequest
0 голосов
/ 31 марта 2020

Я немного новичок javascript. Я просто потратил 3 часа на обход стека, пытаясь найти общий ответ на простую проблему. Честно говоря, я даже не уверен, что мне нужно искать, чтобы решить мою проблему.

У меня есть javascript, который я использую, чтобы связать автозаполнение адреса мест в Google с входом, этот вход был перемещен в всплывающее окно, которое не добавляется в DOM, пока не будет нажата кнопка, поэтому теперь привязка не выполняется.

Как мне изменить JS, чтобы он выполнялся после загрузки всплывающего окна?

Новое всплывающее окно имеет CSS ID "elementor-popup-modal-97".


function bind_autocomplete(){
    // Bind the field based on element ID
    autocomplete = new google.maps.places.Autocomplete( document.getElementById(LAA_search_field_id), {types: ['geocode']});

    autocomplete.setFields(['address_component']);
    autocomplete.addListener('place_changed', fillInAddress);
}

function fillInAddress() {
    var componentForm = {
        street_number: LAA_search_field_street_number,
        route: LAA_search_field_street_name,
        locality: LAA_search_field_suburb,
        administrative_area_level_1: LAA_search_field_state,
        postal_code: LAA_search_field_postcode
      };

    var place = autocomplete.getPlace();

    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]["short_name"];
            if (addressType=="route" && LAA_strip_street_type == "yes") {
                var lastIndex = val.lastIndexOf(" ");
                val = val.substring(0, lastIndex);
            }
            document.getElementById(componentForm[addressType]).value = val;
        }
    }
}

jQuery(window).load(function(){
    bind_autocomplete();
});

Я не уверен, стоит ли обновлять autocomplete = new google.maps.places.Autocomplete( document.getElementById(LAA_search_field_id), {types: ['geocode']});, чтобы каким-то образом нацеливать идентификатор, даже если он еще не загружен (это вообще возможно), или я должен обернуть bind_autocomplete(); в вызов, который определяет, было ли добавлено #elementor-popup-modal-97 в DOM?

Я ценю любую помощь.

Приветствия,

Джем ie

...