diff --git a/Views/FormView.js b/Views/FormView.js index fd49e5f..deb5682 100644 --- a/Views/FormView.js +++ b/Views/FormView.js @@ -294,15 +294,16 @@ export class FormView { return []; } - const selects = form.getElementsByTagName('select'), - textareas = form.getElementsByTagName('textarea'), - inputs = [].slice.call(form.getElementsByTagName('input')), - buttons = form.getElementsByTagName('button'), - canvas = form.getElementsByTagName('canvas'), - external = document.querySelectorAll('form:not(#' + this.id + ') [form=' + this.id + ']'), - special = form.querySelectorAll('[data-name]'), - specialExt = document.querySelectorAll('form:not(#' + this.id + ') [data-form=' + this.id + '] [data-name]'), - inputLength = inputs.length; + const selects = form.getElementsByTagName('select'), + textareas = form.getElementsByTagName('textarea'), + inputs = [].slice.call(form.getElementsByTagName('input')), + buttons = form.getElementsByTagName('button'), + canvas = form.getElementsByTagName('canvas'), + external = [].slice.call(document.querySelectorAll(':not(#' + this.id + ') [form=' + this.id + ']')), + special = form.querySelectorAll('[data-name]'), + specialExt = document.querySelectorAll('form:not(#' + this.id + ') [data-form=' + this.id + '] [data-name]'), + inputLength = inputs.length, + externalLength = external.length; // todo: handle trigger element. check which element triggered the submit and pass it's name+value // the reason for this is, there may be multiple buttons in a form which trigger a send @@ -310,11 +311,15 @@ export class FormView { // Maybe it makes sense to do this however at a different place e.g. the actual data submit for (let i = 0; i < inputLength; ++i) { - if (inputs[i].type === 'checkbox' && !inputs[i].checked) { + if ((inputs[i].type === 'checkbox' || inputs[i].type === 'radio') && !inputs[i].checked) { delete inputs[i]; } + } - // todo: handle radio here as well + for (let i = 0; i < externalLength; ++i) { + if ((external[i].type === 'checkbox' || external[i].type === 'radio') && !external[i].checked) { + delete external[i]; + } } return Array.prototype.slice.call(inputs).concat(