diff options
author | bptato <nincsnevem662@gmail.com> | 2023-09-30 19:18:22 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-09-30 19:18:22 +0200 |
commit | 1b20a3f8fae0f0eaa4f0b9979dc25d5bd04b9b10 (patch) | |
tree | 9cae5df0e9c1b6a378799473d76ba64d4e3f1f17 /src/server | |
parent | 31fbd611aa107cc023dcf1e1358f19ff58f14075 (diff) | |
download | chawan-1b20a3f8fae0f0eaa4f0b9979dc25d5bd04b9b10.tar.gz |
Improve implicit form submission
* Implement the "default button" part of the standard. * If the submitter is the form, formmethod may be called on it. Check if this is the case in the function, and if yes, return the form's method.
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/buffer.nim | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/buffer.nim b/src/server/buffer.nim index 1e97a4bb..24dc7d3d 100644 --- a/src/server/buffer.nim +++ b/src/server/buffer.nim @@ -1200,8 +1200,17 @@ type ReadSuccessResult* = object repaint*: bool func implicitSubmit(input: HTMLInputElement): Option[Request] = - if input.form != nil and input.form.canSubmitImplicitly(): - return submitForm(input.form, input.form) + let form = input.form + if form != nil and form.canSubmitImplicitly(): + var defaultButton: Element + for element in form.elements: + if element.isSubmitButton(): + defaultButton = element + break + if defaultButton != nil: + return submitForm(form, defaultButton) + else: + return submitForm(form, form) proc readSuccess*(buffer: Buffer, s: string): ReadSuccessResult {.proxy.} = if buffer.document.focus != nil: |