diff --git a/src/pretix/control/templates/pretixcontrol/base.html b/src/pretix/control/templates/pretixcontrol/base.html index 65c4a9235..79d9c5f52 100644 --- a/src/pretix/control/templates/pretixcontrol/base.html +++ b/src/pretix/control/templates/pretixcontrol/base.html @@ -61,6 +61,7 @@ + {% endcompress %} {{ html_head|safe }} diff --git a/src/pretix/presale/templates/pretixpresale/fragment_js.html b/src/pretix/presale/templates/pretixpresale/fragment_js.html index f79c396da..304452adc 100644 --- a/src/pretix/presale/templates/pretixpresale/fragment_js.html +++ b/src/pretix/presale/templates/pretixpresale/fragment_js.html @@ -20,4 +20,5 @@ + {% endcompress %} diff --git a/src/pretix/static/pretixbase/js/addressform.js b/src/pretix/static/pretixbase/js/addressform.js new file mode 100644 index 000000000..5468ed9c0 --- /dev/null +++ b/src/pretix/static/pretixbase/js/addressform.js @@ -0,0 +1,44 @@ +$(function () { + "use strict"; + + $("select[name$=state]:not([data-static])").each(function () { + var dependent = $(this), + counter = 0, + dependency = $(this).closest(".panel-body, form").find('select[name$=country]'), + update = function (ev) { + counter++; + var curCounter = counter; + dependent.prop("disabled", true); + dependency.closest(".form-group").find("label").prepend(" "); + $.getJSON('/js_helpers/states/?country=' + dependency.val(), function (data) { + if (counter > curCounter) { + return; // Lost race + } + var selected_value = dependent.prop("data-selected-value"); + dependent.find("option").filter(function (t) {return !!$(this).attr("value")}).remove(); + if (data.data.length > 0) { + $.each(data.data, function (k, s) { + var o = $("