diff --git a/src/pretix/static/pretixbase/js/addressform.js b/src/pretix/static/pretixbase/js/addressform.js index 81c1f9af13..baedc8da7b 100644 --- a/src/pretix/static/pretixbase/js/addressform.js +++ b/src/pretix/static/pretixbase/js/addressform.js @@ -1,6 +1,10 @@ $(function () { "use strict"; + // Responses are expected to only depend on the GET parameters passed, so we can have a little client-side cache + // to prevent fetching the same thing many times. + var responseCache = {}; + $("[data-address-information-url]").each(function () { let xhr; const form = $(this); @@ -21,6 +25,75 @@ $(function () { dependents[$(this).attr("name").split("-").pop()] = $(this) }) + if (!Object.values(dependents).some((el) => el.length)) { + // No address fields found, do not create request + return; + } + + const update_form = function (data) { + var selected_state = dependents.state.prop("data-selected-value"); + if (selected_state) dependents.state.prop("data-selected-value", ""); + dependents.state.find("option:not([value=''])").remove(); + $.each(data.data, function (k, s) { + var o = $("