Adds reset method to FormControl

This commit is contained in:
Matthew Rasmus 2014-12-07 10:33:20 -08:00
parent f0ce2af89c
commit a3b3295d80
2 changed files with 20 additions and 20 deletions

View file

@ -346,32 +346,17 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
// TODO: This is an incorrect way of getting controls owned
// by the form, but good enough until html5ever lands
for child in node.traverse_preorder() {
// TODO This is the wrong place to do this. Each resettable
// element should implement its own reset method (trait?)
//
// List of resettable elements:
// https://html.spec.whatwg.org/multipage/forms.html#category-reset
match child.type_id() {
ElementNodeTypeId(HTMLInputElementTypeId) => {
let input: JSRef<HTMLInputElement> = HTMLInputElementCast::to_ref(child)
.unwrap();
let ty = input.Type();
match ty.as_slice() {
"radio" | "checkbox" => {
// TODO Reset radios/checkboxes here
},
"image" => (),
_ => ()
}
input.SetValue(input.DefaultValue());
input.reset()
}
// TODO HTMLKeygenElement unimplemented
/*ElementNodeTypeID(HTMLKeygenElementTypeId) => {
// Unimplemented
{}
}*/
//ElementNodeTypeID(HTMLKeygenElementTypeId) => {
// // Unimplemented
// {}
//}
ElementNodeTypeId(HTMLSelectElementTypeId) => {
// Unimplemented
{}
@ -498,4 +483,5 @@ pub trait FormControl<'a> : Copy {
fn to_element(self) -> JSRef<'a, Element>;
// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-mutable
fn mutable(self) -> bool;
fn reset(self);
}

View file

@ -571,6 +571,20 @@ impl<'a> FormControl<'a> for JSRef<'a, HTMLInputElement> {
// https://html.spec.whatwg.org/multipage/forms.html#the-readonly-attribute:concept-fe-mutable
!(self.Disabled() || self.ReadOnly())
}
fn reset(self) {
let ty = self.Type();
match ty.as_slice() {
"radio" | "checkbox" => {
// TODO Reset radios/checkboxes here
},
"image" => (),
_ => ()
}
self.SetValue(self.DefaultValue());
}
}