Executa js dupa ce se incarca modala

Vreau sa il ajut pe un prieten cu un site ( https://educatiavederii.ro/?judet=cluj ) . Cand un user face click pe Trimite-mi raportul se deschide o modala si vrea sa se faca autoselect pentru judet, in functie de judetul din URL . I-am trimis urmatorul cod dar nu functioneaza:

$( ".tve_p_lb_content.tve-tl-anim.tl-anim-instant.bSe.cnt.tve-leads-triggered").load( "https://educatiavederii.ro/?judet=cluj", function() {
  alert( "Load was performed." );
  const urlParam = window.location.search.split('judet=')[1].toLowerCase();
  const selectInput = document.querySelectorAll('.tve_lg_input_container select')[0];
  [].forEach.call(document.querySelectorAll('.tve_lg_input_container select option'), function(elm){
    if (urlParam === elm.value) {
      selectInput.value = elm.value;
    }
    return;
  });  
});

Este ceva in flow ul de executie al javascripului care imi scapa. Daca ar fi fost fara modala, codul functioneaza perfect.
Ce fac gresit?

Ia pas cu pas exemplul si daca nu intelegi ceva intreaba.

Am folosit capitalizeWords pt. ca valorile din selectorul de judet cu valorile venite din URL nu sunt identice, ex:

  • ?judet=cluj
  • <option value="Cluj">Cluj</option> <-- value should be cluj

var $ = jQuery
var regionSelector = "[name='field[5]']"
var urlQuery = {}

if (window.location.search.length) {
  window.location.search.slice(1).split("&").forEach(function (value) {
    var field = value.split("=")
    
    urlQuery[field[0]] = decodeURIComponent(field[1])
  })
}

function capitalizeWords (string) {
  return string.replace(/(?:^|\s)\S/g, function (value) {
    return value.toUpperCase()
  })
}

function waitForElement (selector, callback) {
  if ($(selector).is(":visible")) {
    callback()
  }
  else {
    setTimeout(waitForElement, 200, selector, callback)
  }
}

function autoSelectRegion () {
  if (urlQuery.judet) {
    var regionSelect = document.querySelector(regionSelector)

    if (regionSelect) {
      regionSelect.value = capitalizeWords(urlQuery.judet)
    }
  }
}


$('.tve_red.tve_hugeBtn.tve_btn7 > a').on("click", function (event) {
  event.preventDefault()
  waitForElement(regionSelector, autoSelectRegion)
})
2 Likes

Frumos scris codul de mai sus, deșii la fiecare funcție de mai sus a trebuit sa verific documentația de pe MDN. Mi-ar plăcea să ajung să scriu și eu cod în acest fel, chiar și folosind jQuery.
Expresia /(?:^|\s)\S/g nu o înțeleg cum funcționează deși am trecut-o prin https://regex101.com/

1 Like