diff options
author | Nicolas <ashlebede@gmail.com> | 2015-10-07 19:18:39 -0400 |
---|---|---|
committer | Nicolas <ashlebede@gmail.com> | 2015-12-30 00:27:35 -0500 |
commit | 1f234af2ac646509dc83754404ce45d653be9df9 (patch) | |
tree | 834bd771f0f8d73f3d12c0129e5e9551ad5d2c7f /components/script/dom/htmlselectelement.rs | |
parent | 2bb6ea1321d5500ef5b6c9bbc943801acaf0e49a (diff) | |
download | servo-1f234af2ac646509dc83754404ce45d653be9df9.tar.gz servo-1f234af2ac646509dc83754404ce45d653be9df9.zip |
form submission for <textarea> and <select>
small changes from code review
!child.get_disabled_state() becomes child.get_enabled_state()
Diffstat (limited to 'components/script/dom/htmlselectelement.rs')
-rw-r--r-- | components/script/dom/htmlselectelement.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/components/script/dom/htmlselectelement.rs b/components/script/dom/htmlselectelement.rs index daf4d6f9ba5..6db068d6da2 100644 --- a/components/script/dom/htmlselectelement.rs +++ b/components/script/dom/htmlselectelement.rs @@ -14,7 +14,7 @@ use dom::document::Document; use dom::element::{AttributeMutation, Element}; use dom::htmlelement::HTMLElement; use dom::htmlfieldsetelement::HTMLFieldSetElement; -use dom::htmlformelement::{FormControl, HTMLFormElement}; +use dom::htmlformelement::{FormControl, FormDatum, HTMLFormElement}; use dom::htmloptionelement::HTMLOptionElement; use dom::node::{Node, UnbindContext, window_from_node}; use dom::nodelist::NodeList; @@ -82,6 +82,23 @@ impl HTMLSelectElement { } } + pub fn push_form_data(&self, data_set: &mut Vec<FormDatum>) { + let node = self.upcast::<Node>(); + if self.Name().is_empty() { + return; + } + for opt in node.traverse_preorder().filter_map(Root::downcast::<HTMLOptionElement>) { + let element = opt.upcast::<Element>(); + if opt.Selected() && element.get_enabled_state() { + data_set.push(FormDatum { + ty: self.Type(), + name: self.Name(), + value: opt.Value() + }); + } + } + } + // https://html.spec.whatwg.org/multipage/#concept-select-pick pub fn pick_option(&self, picked: &HTMLOptionElement) { if !self.Multiple() { |