diff --git a/resources/assets/javascripts/bootstrap/forms.js b/resources/assets/javascripts/bootstrap/forms.js index 16e403191dd4c4378e84e9f9513ba8f6c7ef912f..b0e66d31c10e448eedf54a059dd699e9bb3cd3ce 100644 --- a/resources/assets/javascripts/bootstrap/forms.js +++ b/resources/assets/javascripts/bootstrap/forms.js @@ -383,10 +383,10 @@ STUDIP.ready(function () { observer.observe($(this).closest(':visible')[0], { attributeOldValue: true, attributes: true, - attributeFilter: ['style', 'class'], + attributeFilter: ['style', 'class', 'hidden'], characterData: false, childList: true, - subtree: false + subtree: true }); $(this).addClass('select2-awaiting'); @@ -394,12 +394,16 @@ STUDIP.ready(function () { function onDomChange(mutations, observer) { mutations.forEach(function(mutation) { - if ($('select.select2-awaiting', mutation.target).length > 0) { - $('select.select2-awaiting', mutation.target) - .removeClass('select2-awaiting') - .each(function() { - createSelect2(this); - }); + let targets = Array.from(mutation.target.querySelectorAll('select.select2-awaiting')); + if (mutation.target.matches('select.select2-awaiting')) { + targets.push(mutation.target); + } + targets = $(targets).filter(':visible'); + + if (targets.length > 0) { + targets.removeClass('select2-awaiting').each(function() { + createSelect2(this); + }); observer.disconnect(); } });