_extractFormData: function()

in src/apache-unomi-tracker.js [1288:1341]


        _extractFormData: function (form) {
            var params = {};
            for (var i = 0; i < form.elements.length; i++) {
                var e = 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) {
                                            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':
                            if (e.options && e.options[e.selectedIndex]) {
                                if (e.multiple) {
                                    params[e.name] = [];
                                    for (var j = 0; j < e.options.length; j++) {
                                        if (e.options[j].selected) {
                                            params[e.name].push(e.options[j].value);
                                        }
                                    }
                                } else {
                                    params[e.name] = e.options[e.selectedIndex].value;
                                }
                            }
                            break;
                    }
                }
            }
            return params;
        },