Skip to content

Commit

Permalink
Merge pull request #1 from Matt-Esch/master
Browse files Browse the repository at this point in the history
Allow checkbox arrays of selected values
  • Loading branch information
Matt-Esch committed Sep 23, 2013
2 parents 78d853d + 296bd49 commit 0f6a5bd
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 2 deletions.
12 changes: 10 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,15 @@ function valueOfElement(elem) {

return checked ? checked.value : null
} else if (Array.isArray(elem)) {
return elem.map(valueOfElement)
return elem.map(valueOfElement).filter(filterNull)
} else if (elem.tagName === undefined && elem.nodeType === undefined) {
return FormData(elem)
} else if (elem.tagName === "INPUT" && isChecked(elem)) {
return elem.checked
if (elem.hasAttribute("value")) {
return elem.checked ? elem.value : null
} else {
return elem.checked
}
} else if (elem.tagName === "INPUT") {
return elem.value
} else if (elem.tagName === "TEXTAREA") {
Expand Down Expand Up @@ -65,3 +69,7 @@ function toList(value) {
function prop(x) {
return this[x]
}

function filterNull(val) {
return val !== null
}
32 changes: 32 additions & 0 deletions test/checkbox.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
var test = require("tape")
var h = require("hyperscript")

var FormData = require("../index")

test("FormData works with <input type='checkbox' value='val' />",
function (assert) {
var elements = {
foo: [
checkbox("bar", "foo"),
checkbox("bar", "bar", true),
checkbox("bar", "baz", true)
]
}

var data = FormData(elements)

assert.deepEqual(data, {
foo: ["bar", "baz"]
})

assert.end()
})

function checkbox(name, value, checked) {
return h("input", {
type: "checkbox",
name: name,
value: value,
checked: !!checked
})
}
1 change: 1 addition & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ require("./basic")
require("./nested-object")
require("./select")
require("./radio")
require("./checkbox")
require("./arbitrary-functions")

0 comments on commit 0f6a5bd

Please sign in to comment.