mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-26 14:28:49 +00:00
LibWeb: Implement <button>'s activation behaviour
This allows us to submit forms from <button> elements and not just <input type="submit"> This allows Discord to progress past the username registration :^)
This commit is contained in:
parent
46c0d0f7ae
commit
4fa270d81f
Notes:
sideshowbarker
2024-07-17 18:06:52 +09:00
Author: https://github.com/Lubrsi
Commit: 4fa270d81f
Pull-request: https://github.com/SerenityOS/serenity/pull/12837
1 changed files with 36 additions and 0 deletions
|
@ -4,13 +4,49 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/DOM/Document.h>
|
||||
#include <LibWeb/HTML/HTMLButtonElement.h>
|
||||
#include <LibWeb/HTML/HTMLFormElement.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
||||
HTMLButtonElement::HTMLButtonElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||
: FormAssociatedElement(document, move(qualified_name))
|
||||
{
|
||||
// https://html.spec.whatwg.org/multipage/form-elements.html#the-button-element:activation-behaviour
|
||||
activation_behavior = [this](auto&) {
|
||||
// 1. If element is disabled, then return.
|
||||
if (!enabled())
|
||||
return;
|
||||
|
||||
// 2. If element does not have a form owner, then return.
|
||||
if (!form())
|
||||
return;
|
||||
|
||||
// 3. If element's node document is not fully active, then return.
|
||||
if (!this->document().is_fully_active())
|
||||
return;
|
||||
|
||||
// 4. Switch on element's type attribute's state:
|
||||
switch (type_state()) {
|
||||
case TypeAttributeState::Submit:
|
||||
// Submit Button
|
||||
// Submit element's form owner from element.
|
||||
form()->submit_form(this);
|
||||
break;
|
||||
case TypeAttributeState::Reset:
|
||||
// Reset Button
|
||||
// FIXME: Reset element's form owner.
|
||||
TODO();
|
||||
break;
|
||||
case TypeAttributeState::Button:
|
||||
// Button
|
||||
// Do nothing.
|
||||
break;
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
HTMLButtonElement::~HTMLButtonElement()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue