Skip to content

Commit 35eee19

Browse files
authored
Merge pull request #27 from github/dg-skip-prevented-events
Skip events that already have default prevented
2 parents 5fdcea9 + 691010c commit 35eee19

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ function getMatches(el: HTMLElement): RemoteFormHandler[] {
105105
}
106106

107107
function handleSubmit(event: Event) {
108-
if (!(event.target instanceof HTMLFormElement)) {
108+
if (!(event.target instanceof HTMLFormElement) || event.defaultPrevented) {
109109
return
110110
}
111111
const form = event.target

test/test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,20 @@ describe('remoteForm', function () {
139139
button.form.action += '?a=b'
140140
button.click()
141141
})
142+
143+
it('does not submit the request if default is already prevented', function () {
144+
// prevent default before this event reaches the remote-form listener
145+
const defaultPreventHandler = event => event.preventDefault()
146+
document.addEventListener('submit', defaultPreventHandler, {capture: true})
147+
148+
let handlerCalled = false
149+
remoteForm('.my-remote-form', async function () {
150+
handlerCalled = true
151+
})
152+
153+
document.querySelector('button[type=submit]').click()
154+
155+
assert.isFalse(handlerCalled)
156+
document.removeEventListener('submit', defaultPreventHandler, {capture: true})
157+
})
142158
})

0 commit comments

Comments
 (0)