in src/apache-unomi-tracker.js [1357:1412]
_extractFormData: function (form) {
/** @type {Record<string, string | string[]>} */
var params = {};
for (var i = 0; i < form.elements.length; i++) {
var e = /** @type {HTMLInputElement | HTMLSelectElement} */(form.elements[i]);
// ignore empty and undefined key (e.name)
if (e.name) {
switch (e.nodeName) {
case 'TEXTAREA':
case 'INPUT':
switch (e.type) {
case 'checkbox':
var checkboxes = document.querySelectorAll('input[name="' + e.name + '"]');
if (checkboxes.length > 1) {
if (!params[e.name]) {
params[e.name] = [];
}
if (e.checked) {
/** @type {string[]} */(params[e.name]).push(e.value);
}
}
break;
case 'radio':
if (e.checked) {
params[e.name] = e.value;
}
break;
default:
if (!e.value || e.value == '') {
// ignore element if no value is provided
break;
}
params[e.name] = e.value;
}
break;
case 'SELECT':
var s = /** @type {HTMLSelectElement} */(e);
if (s.options && s.options[s.selectedIndex]) {
if (s.multiple) {
params[s.name] = [];
for (var j = 0; j < s.options.length; j++) {
if (s.options[j].selected) {
/** @type {string[]} */(params[s.name]).push(s.options[j].value);
}
}
} else {
params[s.name] = s.options[s.selectedIndex].value;
}
}
break;
}
}
}
return params;
},