diff --git a/packages/happy-dom/src/nodes/html-button-element/HTMLButtonElement.ts b/packages/happy-dom/src/nodes/html-button-element/HTMLButtonElement.ts index ce0c93b53..a0426fcc7 100644 --- a/packages/happy-dom/src/nodes/html-button-element/HTMLButtonElement.ts +++ b/packages/happy-dom/src/nodes/html-button-element/HTMLButtonElement.ts @@ -217,7 +217,7 @@ export default class HTMLButtonElement extends HTMLElement implements IHTMLButto const form = this[PropertySymbol.formNode]; switch (this.type) { case 'submit': - form.requestSubmit(); + form.requestSubmit(this); break; case 'reset': form.reset(); diff --git a/packages/happy-dom/src/nodes/html-input-element/HTMLInputElement.ts b/packages/happy-dom/src/nodes/html-input-element/HTMLInputElement.ts index d8dbc807a..9fb7cdb52 100644 --- a/packages/happy-dom/src/nodes/html-input-element/HTMLInputElement.ts +++ b/packages/happy-dom/src/nodes/html-input-element/HTMLInputElement.ts @@ -1301,7 +1301,7 @@ export default class HTMLInputElement extends HTMLElement implements IHTMLInputE } else if (inputType === 'submit') { const form = this[PropertySymbol.formNode]; if (form) { - form.requestSubmit(); + form.requestSubmit(this); } } else if (inputType === 'reset' && this[PropertySymbol.isConnected]) { const form = this[PropertySymbol.formNode]; diff --git a/packages/happy-dom/test/nodes/html-button-element/HTMLButtonElement.test.ts b/packages/happy-dom/test/nodes/html-button-element/HTMLButtonElement.test.ts index 4aeef9956..c03655228 100644 --- a/packages/happy-dom/test/nodes/html-button-element/HTMLButtonElement.test.ts +++ b/packages/happy-dom/test/nodes/html-button-element/HTMLButtonElement.test.ts @@ -2,6 +2,7 @@ import Window from '../../../src/window/Window.js'; import Document from '../../../src/nodes/document/Document.js'; import IHTMLButtonElement from '../../../src/nodes/html-button-element/IHTMLButtonElement.js'; import Event from '../../../src/event/Event.js'; +import SubmitEvent from '../../../src/event/events/SubmitEvent'; import IHTMLElement from '../../../src/nodes/html-element/IHTMLElement.js'; import IHTMLFormElement from '../../../src/nodes/html-form-element/IHTMLFormElement.js'; import ValidityState from '../../../src/validity-state/ValidityState.js'; @@ -255,11 +256,16 @@ describe('HTMLButtonElement', () => { document.body.appendChild(form); - form.addEventListener('submit', () => submitTriggeredCount++); + let submitter: IHTMLElement | null = null; + form.addEventListener('submit', (event) => { + submitTriggeredCount++; + submitter = (event).submitter; + }); button.click(); expect(submitTriggeredCount).toBe(1); + expect(submitter).toBe(button); }); it('Resets form if type is "reset" and is a "click" event.', () => { diff --git a/packages/happy-dom/test/nodes/html-input-element/HTMLInputElement.test.ts b/packages/happy-dom/test/nodes/html-input-element/HTMLInputElement.test.ts index 1c181aa39..977833147 100644 --- a/packages/happy-dom/test/nodes/html-input-element/HTMLInputElement.test.ts +++ b/packages/happy-dom/test/nodes/html-input-element/HTMLInputElement.test.ts @@ -10,6 +10,7 @@ import HTMLInputElementSelectionDirectionEnum from '../../../src/nodes/html-inpu import ValidityState from '../../../src/validity-state/ValidityState.js'; import IHTMLFormElement from '../../../src/nodes/html-form-element/IHTMLFormElement.js'; import DOMExceptionNameEnum from '../../../src/exception/DOMExceptionNameEnum.js'; +import SubmitEvent from '../../../src/event/events/SubmitEvent.js'; import { beforeEach, describe, it, expect } from 'vitest'; describe('HTMLInputElement', () => { @@ -1206,11 +1207,16 @@ describe('HTMLInputElement', () => { document.body.appendChild(form); - form.addEventListener('submit', () => submitTriggeredCount++); + let submitter: IHTMLInputElement | null = null; + form.addEventListener('submit', (event) => { + submitTriggeredCount++; + submitter = (event).submitter; + }); button.click(); expect(submitTriggeredCount).toBe(1); + expect(submitter).toBe(button); }); it('Resets form if type is "reset" and is a "click" event.', () => {