add multi select list

master
Kanezoh 2021-07-01 19:02:57 +09:00
parent 9f6893c67b
commit 18e948616a
2 changed files with 15 additions and 0 deletions

View File

@ -5,6 +5,7 @@ require "./form/text"
require "./form/textarea"
require "./form/hidden"
require "./form/button"
require "./form/multi_select_list"
require "./utils/element_matcher"
class MechanizeCr::Form
@ -14,6 +15,7 @@ class MechanizeCr::Form
getter fields : Array(FormContent::Field)
getter checkboxes : Array(FormContent::CheckBox)
getter radiobuttons : Array(FormContent::RadioButton)
getter selectboxes : Array(FormContent::MultiSelectList)
getter buttons : Array(FormContent::Button)
getter enctype : String
getter method : String
@ -26,6 +28,7 @@ class MechanizeCr::Form
@fields = Array(FormContent::Field).new
@checkboxes = Array(FormContent::CheckBox).new
@radiobuttons = Array(FormContent::RadioButton).new
@selectboxes = Array(FormContent::MultiSelectList).new
@buttons = Array(FormContent::Button).new
@action = node.fetch("action", "")
@method = node.fetch("method", "GET").upcase
@ -99,6 +102,17 @@ class MechanizeCr::Form
next if type == "reset"
@buttons << FormContent::Button.new(node, @node)
end
# Find all select tags
@node.css("select").each do |node|
node = node.as(Myhtml::Node)
next if node["name"].empty?
if node.has_key?("multiple")
@selectboxes << FormContent::MultiSelectList.new(node)
else
#@fields << SelectList.new(node)
end
end
end
private def build_query_string(params : Array(Array(String)))

View File

@ -16,4 +16,5 @@ struct Myhtml::Node
delegate :[]=, to: attributes
delegate :[]?, to: attributes
delegate :fetch, to: attributes
delegate :has_key?, to: attributes
end