diff --git a/static/js/utils/massInput.js b/static/js/utils/massInput.js index fa8e075bf..00713fbd8 100644 --- a/static/js/utils/massInput.js +++ b/static/js/utils/massInput.js @@ -25,6 +25,7 @@ var MASS_INPUT_CELL_SELECTOR = '.massinput__cell'; var MASS_INPUT_ADD_CELL_SELECTOR = '.massinput__cell--add'; + var MASS_INPUT_SUBMIT_BUTTON_CLASS = 'massinput__submit-button'; var MASS_INPUT_INITIALIZED_CLASS = 'mass-input--initialized'; var massInputUtil = function(element) { @@ -74,6 +75,12 @@ } 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'); @@ -87,7 +94,7 @@ return false; } - var submitButton = massInputCell.querySelector('button[type="submit"][name][value]'); + var submitButton = massInputCell.querySelector('.' + MASS_INPUT_SUBMIT_BUTTON_CLASS); if (!submitButton) { return false; } @@ -122,6 +129,14 @@ }; } + function unarmSubmitButtons() { + 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); + }); + } + function processResponse(response) { element.innerHTML = response;