diff --git a/static/js/utils/asyncTable.js b/static/js/utils/asyncTable.js index a8021817b..13598904b 100644 --- a/static/js/utils/asyncTable.js +++ b/static/js/utils/asyncTable.js @@ -161,7 +161,7 @@ tableFilterInputs.search.forEach(function(input) { var debouncedInput = debounce(function() { if (input.value.length === 0 || input.value.length > 2) { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); } }, INPUT_DEBOUNCE); input.addEventListener('input', debouncedInput); @@ -170,7 +170,7 @@ tableFilterInputs.input.forEach(function(input) { var debouncedInput = debounce(function() { if (input.value.length === 0 || input.value.length > 2) { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); } }, INPUT_DEBOUNCE); input.addEventListener('input', debouncedInput); @@ -178,37 +178,36 @@ tableFilterInputs.change.forEach(function(input) { input.addEventListener('change', function() { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); }); tableFilterInputs.select.forEach(function(input) { input.addEventListener('change', function() { - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); }); tableFilterForm.addEventListener('submit', function(event) { event.preventDefault(); - updateFromTableFilter(); + updateFromTableFilter(tableFilterForm); }); } - function updateFromTableFilter() { + function updateFromTableFilter(tableFilterForm) { var url = serializeTableFilterToURL(); var callback = null; - var focusedSearch = tableFilterInputs.search.reduce(function(acc, input) { - return acc || (input.matches(':focus') && input); - }, null); - // focus search input - if (focusedSearch) { - var selectionStart = focusedSearch.selectionStart; + var focusedInput = tableFilterForm.querySelector(':focus, :active'); + // focus previously focused input + if (focusedInput) { + var selectionStart = focusedInput.selectionStart; + var focusId = focusedInput.id; callback = function(wrapper) { - var search = wrapper.querySelector('input[type="search"]'); - if (search) { - search.focus(); - search.selectionStart = selectionStart; + var toBeFocused = wrapper.querySelector('#' + focusId); + if (toBeFocused) { + toBeFocused.focus(); + toBeFocused.selectionStart = selectionStart; } }; }