diff options
| author | mgaligniana <marcelogaligniana@gmail.com> | 2022-02-23 14:16:36 +0100 |
|---|---|---|
| committer | Carlton Gibson <carlton@noumenal.es> | 2022-02-23 14:57:34 +0100 |
| commit | fe7dbef5867c577995f0fc849d8dfdb8f2e6bbfa (patch) | |
| tree | aa857e99a3c986b650e28e5a4d26875f68640614 /django | |
| parent | ae91ecf6a1037fb67d14841b66ac19d4c2ccc4ac (diff) | |
Fixed #28889 -- Prevented double submission of admin forms.
Added a JavaScript confirm() to catch double-submissions, when the
change form has already been submitted.
Thanks to Adam Johnson, Claude Paroz, Keryn Knight, and Thibaud Colas
for review.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/static/admin/js/change_form.js | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/django/contrib/admin/static/admin/js/change_form.js b/django/contrib/admin/static/admin/js/change_form.js index 96a4c62ef4..0ba16efef9 100644 --- a/django/contrib/admin/static/admin/js/change_form.js +++ b/django/contrib/admin/static/admin/js/change_form.js @@ -1,9 +1,23 @@ +/*global gettext*/ 'use strict'; { const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA']; const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName; + let submitted = false; + if (modelName) { const form = document.getElementById(modelName + '_form'); + + form.addEventListener('submit', (event) => { + event.preventDefault(); + if (submitted) { + const answer = window.confirm(gettext('You have already submitted this form. Are you sure you want to submit it again?')); + if (!answer) {return;} + }; + event.target.submit(); + submitted = true; + }); + for (const element of form.elements) { // HTMLElement.offsetParent returns null when the element is not // rendered. |
