diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 3e221c6cb4..e13a73d4b0 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -216,6 +216,7 @@ Yii Framework 2 Change Log - Enh #5058: Added `$pageSize` parameter to `Pagination::createUrl()` to allow creating URLs with arbitrary page sizes (cdcchen, qiangxue) - Enh #5089: Added asset debugger panel (arturf, qiangxue) - Enh #5117: Added `beforeFilter` and `afterFilter` JS events to `GridView` (kartik-v) +- Enh #5124: Added support to prevent duplicated form submission when using `ActiveForm` (qiangxue) - Enh: Added support for using sub-queries when building a DB query with `IN` condition (qiangxue) - Enh: Supported adding a new response formatter without the need to reconfigure existing formatters (qiangxue) - Enh: Added `yii\web\UrlManager::addRules()` to simplify adding new URL rules (qiangxue) diff --git a/framework/assets/yii.activeForm.js b/framework/assets/yii.activeForm.js index da6d7ef8c1..7e784df8c5 100644 --- a/framework/assets/yii.activeForm.js +++ b/framework/assets/yii.activeForm.js @@ -349,11 +349,15 @@ data = $form.data('yiiActiveForm'); if (data.validated) { + if (!data.submitting) { + // form is being submitted. Do nothing to avoid duplicated form submission + return false; + } + data.submitting = false; var event = $.Event(events.beforeSubmit); - $form.trigger(event, [$form]); + $form.trigger(event); if (event.result === false) { data.validated = false; - data.submitting = false; return false; } return true; // continue submitting the form since validation passes