aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlselectelement.rs
diff options
context:
space:
mode:
authorNicolas <ashlebede@gmail.com>2015-10-07 19:18:39 -0400
committerNicolas <ashlebede@gmail.com>2015-12-30 00:27:35 -0500
commit1f234af2ac646509dc83754404ce45d653be9df9 (patch)
tree834bd771f0f8d73f3d12c0129e5e9551ad5d2c7f /components/script/dom/htmlselectelement.rs
parent2bb6ea1321d5500ef5b6c9bbc943801acaf0e49a (diff)
downloadservo-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.rs19
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() {