Capture correct radio button value in a form input event
This commit is contained in:
1 parent
fa91ad6315
commit
ab4e37fbf2
1 file changed
+17
-9
+17
-9
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user