diff --git a/static/js/utils/massInput.js b/static/js/utils/massInput.js index 00713fbd8..a7b7b5a23 100644 --- a/static/js/utils/massInput.js +++ b/static/js/utils/massInput.js @@ -46,6 +46,13 @@ } massInputFormSubmitHandler = makeSubmitHandler(); + + // "unarm" submit buttons inside this massinput so browser + // uses correct submit button for form submission. + // contents of the massinput will be replaced either way, + // so unarming is no problem + unarmSubmitButtons(massInputFormSubmitHandler); + massInputForm.addEventListener('submit', massInputFormSubmitHandler); // mark initialized @@ -75,12 +82,6 @@ } return function(event) { - // "unarm" submit buttons inside this massinput so browser - // uses correct submit button for form submission. - // contents of the massinput will be replaced either way, - // so unarming is no problem - unarmSubmitButtons(); - // check if event occured from either a mass input add/delete button or // from inside one of massinput's inputs (i.e. they are focused/active) var activeElement = element.querySelector(':focus, :active'); @@ -129,11 +130,13 @@ }; } - function unarmSubmitButtons() { + function unarmSubmitButtons(submitHandler) { var buttons = Array.from(element.querySelectorAll('button[type="submit"][name][value]')); buttons.forEach(function(button) { button.setAttribute('type', 'button'); button.classList.add(MASS_INPUT_SUBMIT_BUTTON_CLASS); + + button.addEventListener('click', submitHandler); }); } @@ -192,6 +195,12 @@ function reset() { element.classList.remove(MASS_INPUT_INITIALIZED_CLASS); massInputForm.removeEventListener('submit', massInputFormSubmitHandler) + + Array.from(element.querySelectorAll('.' + MASS_INPUT_SUBMIT_BUTTON_CLASS)).forEach(function(button) { + button.removeEventListener('click', submitHandler); + button.classList.remove(MASS_INPUT_SUBMIT_BUTTON_CLASS); + button.setAttribute('type', 'submit'); + }); } return init();