Capture correct radio button value in a form input event

This commit is contained in:
Joshua Kifer committed 2022-03-19 12:24:29 -06:00
1 parent fa91ad6315
commit ab4e37fbf2
1 file changed
+17 -9
+17 -9
View File
@@ -241,25 +241,33 @@ fn virtual_event_from_websys_event(
for x in 0..elements.length() { for x in 0..elements.length() {
let element = elements.item(x).unwrap(); let element = elements.item(x).unwrap();
if let Some(name) = element.get_attribute("name") { if let Some(name) = element.get_attribute("name") {
let value: String = (&element) let value: Option<String> = (&element)
.dyn_ref() .dyn_ref()
.map(|input: &web_sys::HtmlInputElement| { .map(|input: &web_sys::HtmlInputElement| {
log::info!("Input type: {}", input.type_());
match input.type_().as_str() { match input.type_().as_str() {
"checkbox" => { "checkbox" => {
match input.checked() { match input.checked() {
true => "true".to_string(), true => Some("true".to_string()),
false => "false".to_string(), false => Some("false".to_string()),
} }
}, },
_ => input.value() "radio" => {
match input.checked() {
true => Some(input.value()),
false => None,
}
}
_ => Some(input.value())
} }
}) })
.or_else(|| target.dyn_ref().map(|input: &web_sys::HtmlTextAreaElement| input.value())) .or_else(|| target.dyn_ref().map(|input: &web_sys::HtmlTextAreaElement| Some(input.value())))
.or_else(|| target.dyn_ref().map(|input: &web_sys::HtmlSelectElement| input.value())) .or_else(|| target.dyn_ref().map(|input: &web_sys::HtmlSelectElement| Some(input.value())))
.or_else(|| target.dyn_ref::<web_sys::HtmlElement>().unwrap().text_content()) .or_else(|| Some(target.dyn_ref::<web_sys::HtmlElement>().unwrap().text_content()))
.expect("only an InputElement or TextAreaElement or an element with contenteditable=true can have an oninput event listener"); .expect("only an InputElement or TextAreaElement or an element with contenteditable=true can have an oninput event listener");
if let Some(value) = value {
values.insert(name, value); values.insert(name, value);
}
} }
} }
} }