handle checkboxes and fix bug

This commit is contained in:
Dennis Eichhorn 2019-12-29 23:16:00 +01:00
parent 8f49a37a70
commit a9404130b3

View File

@ -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(