diff --git a/src/form_submission.ts b/src/form_submission.ts index 968088362..8974b5034 100644 --- a/src/form_submission.ts +++ b/src/form_submission.ts @@ -24,13 +24,15 @@ export class FormSubmission { readonly formElement: HTMLFormElement readonly formData: FormData readonly fetchRequest: FetchRequest + readonly mustRedirect: boolean state = FormSubmissionState.initialized - constructor(delegate: FormSubmissionDelegate, formElement: HTMLFormElement) { + constructor(delegate: FormSubmissionDelegate, formElement: HTMLFormElement, mustRedirect = false) { this.delegate = delegate this.formElement = formElement this.formData = new FormData(formElement) this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body) + this.mustRedirect = mustRedirect } get method(): FetchMethod { @@ -91,7 +93,7 @@ export class FormSubmission { } requestSucceededWithResponse(request: FetchRequest, response: FetchResponse) { - if (response.redirected) { + if (response.redirected || !this.mustRedirect) { this.state = FormSubmissionState.receiving this.delegate.formSubmissionSucceededWithResponse(this, response) } else { diff --git a/src/navigator.ts b/src/navigator.ts index 10e4e6947..cf10f260b 100644 --- a/src/navigator.ts +++ b/src/navigator.ts @@ -31,7 +31,7 @@ export class Navigator { } submit(form: HTMLFormElement, options: Partial = {}) { - const formSubmission = new FormSubmission(this, form) + const formSubmission = new FormSubmission(this, form, true) const { target } = { ...navigationOptionsForForm(form), ...options } if (target != NavigationTarget.background) {