LibWeb: Stop radio buttons firing change events when losing focus

This commit is contained in:
Psychpsyo 2024-11-22 13:05:10 +01:00 committed by Tim Ledbetter
commit c75dda8f8b
Notes: github-actions[bot] 2024-11-22 13:59:41 +00:00
3 changed files with 25 additions and 0 deletions

View file

@ -638,6 +638,7 @@ void HTMLInputElement::commit_pending_changes()
case TypeAttributeState::Text:
case TypeAttributeState::URL:
case TypeAttributeState::Checkbox:
case TypeAttributeState::RadioButton:
if (!m_has_uncommitted_changes)
return;
break;

View file

@ -0,0 +1 @@
PASS: Change event was not fired

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<input type="radio" id="radioButton">
<script src="include.js"></script>
<script>
let changeEventFired = false;
radioButton.addEventListener("change", () => {
changeEventFired = true;
});
asyncTest(async done => {
radioButton.focus();
await new Promise(resolve => setTimeout(resolve, 0));
radioButton.blur();
await new Promise(resolve => setTimeout(resolve, 0));
if (changeEventFired) {
println("FAIL: Change event was fired when it shouldn't have been.");
} else {
println("PASS: Change event was not fired");
}
done();
});
</script>