Form Link Submissions: Don't remove <form>
until submission is complete
#678
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When an
<a>
element annotated with[data-turbo-method]
is clicked,Turbo Drive creates, appends, submits, and removes a
<form>
elementbehind the scenes.
Unfortunately, prior to this commit, the
<form>
element is submittedthen removed synchronously and immediately. This means that by the time
the
submit
events (and resultingturbo:before-fetch-request
andturbo:submit-start
events) bubble up through the document, the<form>
element is already disconnected.In its absence, the
document.documentElement
serves as the event'starget.
This commit changes that process to defer the elements removal until
after it dispatches a
turbo:submit-end
event.The result is that the element is present throughout all the events, and
is accessible through
event.target
.