From bf2d561be4300f5ba9a60919d4c93070db337a35 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 4 Apr 2023 09:32:09 -0500 Subject: [PATCH] invert prevent default on web forms --- packages/web/src/dom.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index e9e801588..35ccabe33 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -54,16 +54,17 @@ impl WebsysDom { let element = walk_event_for_id(event); let bubbles = dioxus_html::event_bubbles(name.as_str()); if let Some((element, target)) = element { + let prevent_default_attribute = target.get_attribute("dioxus-prevent-default"); + let prevented_event = prevent_default_attribute + .as_deref() + .map(|f| f.trim_start_matches("on")); // Prevent forms from submitting and redirecting if name == "submit" { - event.prevent_default(); - } - if target - .get_attribute("dioxus-prevent-default") - .as_deref() - .map(|f| f.trim_start_matches("on")) - == Some(&name) - { + // On forms the default behavior is not to submit, if prevent default is set then we submit the form + if prevented_event != Some("submit") { + event.prevent_default(); + } + } else if prevented_event == Some(&name) { event.prevent_default(); }