diff options
author | bors-servo <metajack+bors@gmail.com> | 2014-10-11 07:45:39 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2014-10-11 07:45:39 -0600 |
commit | 9dfd5e7fcd2011a411b219e8c45aadc0ecb270bd (patch) | |
tree | 766433d45e69aa6d8abfdbd447d59bcda43461e5 /components/script/dom/htmlselectelement.rs | |
parent | e048f3f940e124d45b43a53a850177c45907822d (diff) | |
parent | ca2d5d328d18878e369dd010236754ae207dab7d (diff) | |
download | servo-9dfd5e7fcd2011a411b219e8c45aadc0ecb270bd.tar.gz servo-9dfd5e7fcd2011a411b219e8c45aadc0ecb270bd.zip |
auto merge of #3642 : Manishearth/servo/form-submit, r=jdm
This is missing a lot of parts, so it doesn't really make any real-world form submission work yet. It provides a skeleton on which the missing bits can be filled in.
What works:
- `<input>` elements except for `type=file`
- GET/POST methods
- URLencoded `enctype`s (default)
- Submission via `<form>.submit()` only
Stuff that needs to be done for most simple real-world cases to work:
- [Working text input](https://github.com/servo/servo/pull/3585)
- Click handlers for `<submit>`
- Possibly `<textarea>` support
- Support for the other two enctypes (#3649)
Todo:
- Correctly implement [planned navigation](https://html.spec.whatwg.org/multipage/forms.html#planned-navigation) using `TrustedFormAddress` (#3648)
- [Correctly implement form owners.](https://github.com/servo/servo/issues/3553) Requires html5ever and some discussion of the spec.
- `<input type=file>` support
- Image submit support
- Browsing contexts/targets
- Support for non-`<input>` controls
- Validation (?)
- Dirname (?)
Diffstat (limited to 'components/script/dom/htmlselectelement.rs')
-rw-r--r-- | components/script/dom/htmlselectelement.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index 53f8ce3efff..8c86318c38c 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -5,13 +5,13 @@ use dom::bindings::codegen::Bindings::HTMLSelectElementBinding; use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods; use dom::bindings::codegen::InheritTypes::{HTMLElementCast, NodeCast}; -use dom::bindings::codegen::InheritTypes::{HTMLSelectElementDerived, HTMLFieldSetElementDerived}; +use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLSelectElementDerived, HTMLFieldSetElementDerived}; use dom::bindings::codegen::UnionTypes::HTMLElementOrLong::HTMLElementOrLong; use dom::bindings::codegen::UnionTypes::HTMLOptionElementOrHTMLOptGroupElement::HTMLOptionElementOrHTMLOptGroupElement; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::document::Document; -use dom::element::{AttributeHandlers, HTMLSelectElementTypeId}; +use dom::element::{AttributeHandlers, Element, HTMLSelectElementTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlelement::HTMLElement; use dom::node::{DisabledStateHelpers, Node, NodeHelpers, ElementNodeTypeId, window_from_node}; @@ -62,6 +62,16 @@ impl<'a> HTMLSelectElementMethods for JSRef<'a, HTMLSelectElement> { // http://www.whatwg.org/html/#dom-fe-disabled make_bool_setter!(SetDisabled, "disabled") + + // https://html.spec.whatwg.org/multipage/forms.html#dom-select-type + fn Type(self) -> DOMString { + let elem: JSRef<Element> = ElementCast::from_ref(self); + if elem.has_attribute("multiple") { + "select-multiple".to_string() + } else { + "select-one".to_string() + } + } } impl<'a> VirtualMethods for JSRef<'a, HTMLSelectElement> { |