LibWeb: Prevent checkboxes from firing change events when losing focus

This is because toggling the checkbox is committing the value.
This commit is contained in:
Psychpsyo 2024-11-16 12:33:40 +01:00 committed by Andreas Kling
parent c898ee90cf
commit 3856dd946b
Notes: github-actions[bot] 2024-11-18 08:05:07 +00:00
3 changed files with 17 additions and 0 deletions

View file

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

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<input type="checkbox" id="checkbox">
<script src="include.js"></script>
<script>
checkbox.addEventListener("change", () => {
println("Change event was fired when it shouldn't have been.");
});
asyncTest(async done => {
checkbox.focus();
await new Promise(resolve => setTimeout(resolve, 0));
checkbox.blur();
await new Promise(resolve => setTimeout(resolve, 0));
done();
});
</script>