MCPcopy Create free account
hub / github.com/FThompson/FormPersistence.js / serialize

Function serialize

form-persistence.js:74–119  ·  view source on GitHub ↗

* Serializes the given form into an object, excluding password and file inputs. * * @param {HTMLFormElement} form The form to serialize. * @param {Object} options Options object containing any of the following: * * include - Define a whitelist array of data names to

(form, options)

Source from the content-addressed store, hash-verified

72 * @return {Object} The serialized data object.
73 */
74 function serialize(form, options) {
75 let defaults = {
76 include: [],
77 exclude: [],
78 includeFilter: null,
79 excludeFilter: null
80 }
81 let config = Object.assign({}, defaults, options)
82 let data = {}
83 for (let element of form.elements) {
84 let tag = element.tagName
85 let type = element.type
86 if (tag === 'INPUT' && (type === 'password' || type === 'file')) {
87 continue // do not serialize passwords or files
88 }
89 if (isNameFiltered(element.name, config.include, config.exclude)
90 || isElementFiltered(element, config.includeFilter, config.excludeFilter)) {
91 continue
92 }
93 if (tag === 'INPUT') {
94 let type = element.type
95 if (type === 'radio') {
96 if (element.checked) {
97 pushToArray(data, element.name, element.value)
98 }
99 } else if (type === 'checkbox') {
100 pushToArray(data, element.name, element.checked)
101 } else {
102 pushToArray(data, element.name, element.value)
103 }
104 } else if (tag === 'TEXTAREA') {
105 pushToArray(data, element.name, element.value)
106 } else if (tag === 'SELECT') {
107 if (element.multiple) {
108 for (let option of element.options) {
109 if (option.selected) {
110 pushToArray(data, element.name, option.value)
111 }
112 }
113 } else {
114 pushToArray(data, element.name, element.value)
115 }
116 }
117 }
118 return data
119 }
120
121 /**
122 * Add a value to an object, creating an array to place it in if needed.

Callers 1

saveFunction · 0.85

Calls 3

isNameFilteredFunction · 0.85
isElementFilteredFunction · 0.85
pushToArrayFunction · 0.85

Tested by

no test coverage detected