diff --git a/src/core/drive/form_submission.ts b/src/core/drive/form_submission.ts
index 3f90629a8..ff203f5e7 100644
--- a/src/core/drive/form_submission.ts
+++ b/src/core/drive/form_submission.ts
@@ -108,7 +108,7 @@ export class FormSubmission {
}
get confirmationMessage() {
- return this.formElement.getAttribute("data-turbo-confirm")
+ return this.submitter?.getAttribute("data-turbo-confirm") || this.formElement.getAttribute("data-turbo-confirm")
}
get needsConfirmation() {
diff --git a/src/tests/fixtures/form.html b/src/tests/fixtures/form.html
index e4c48088d..30eb182dd 100644
--- a/src/tests/fixtures/form.html
+++ b/src/tests/fixtures/form.html
@@ -75,6 +75,7 @@
Form
diff --git a/src/tests/functional/form_submission_tests.ts b/src/tests/functional/form_submission_tests.ts
index 31261323c..15d2f27b9 100644
--- a/src/tests/functional/form_submission_tests.ts
+++ b/src/tests/functional/form_submission_tests.ts
@@ -26,6 +26,7 @@ export class FormSubmissionTests extends TurboDriveTestCase {
this.assert.equal(await this.getAlertText(), "Are you sure?")
await this.acceptAlert()
this.assert.ok(await this.formSubmitStarted)
+ this.assert.equal(await this.pathname, "/src/tests/fixtures/one.html")
}
async "test form submission with confirmation cancelled"() {
@@ -36,6 +37,25 @@ export class FormSubmissionTests extends TurboDriveTestCase {
this.assert.notOk(await this.formSubmitStarted)
}
+ async "test form submission with secondary submitter click - confirmation confirmed"() {
+ await this.clickSelector("#standard form.confirm #secondary_submitter")
+
+ this.assert.equal(await this.getAlertText(), "Are you really sure?")
+ await this.acceptAlert()
+ this.assert.ok(await this.formSubmitStarted)
+ this.assert.equal(await this.pathname, "/src/tests/fixtures/one.html")
+ this.assert.equal(await this.visitAction, "advance")
+ this.assert.equal(await this.getSearchParam("greeting"), "secondary_submitter")
+ }
+
+ async "test form submission with secondary submitter click - confirmation cancelled"() {
+ await this.clickSelector("#standard form.confirm #secondary_submitter")
+
+ this.assert.equal(await this.getAlertText(), "Are you really sure?")
+ await this.dismissAlert()
+ this.assert.notOk(await this.formSubmitStarted)
+ }
+
async "test from submission with confirmation overriden"() {
await this.remote.execute(() => window.Turbo.setConfirmMethod(() => confirm("Overriden message")))