From 643a899ed1450a70456facd375ab8d7d9c71e933 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 21 Sep 2018 22:59:33 +0200 Subject: [PATCH] Ignore unchecked checkboxes --- Log/Logger.js | 4 ++-- Message/Request/Request.js | 1 + Views/FormView.js | 19 ++++++++++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Log/Logger.js b/Log/Logger.js index 0dc05f3..41b3f14 100644 --- a/Log/Logger.js +++ b/Log/Logger.js @@ -69,12 +69,12 @@ message = typeof message === 'undefined' ? jsOMS.Log.Logger.MSG_FULL : message; for (let replace in context) { - if (context.hasOwnProperty(replace)) { + if (context.hasOwnProperty(replace) && typeof message === 'string') { message = message.replace('{' + replace + '}', context[replace]); } } - return message; + return (typeof message) !== 'string' ? JSON.stringify(message) : message; }; /** diff --git a/Message/Request/Request.js b/Message/Request/Request.js index 9c3b7cf..9a707ae 100644 --- a/Message/Request/Request.js +++ b/Message/Request/Request.js @@ -393,6 +393,7 @@ }; if (this.type === jsOMS.Message.Request.RequestType.JSON) { + console.log(JSON.stringify(this.data)); this.xhr.send(JSON.stringify(this.data)); } else if (this.type === jsOMS.Message.Request.RequestType.RAW) { this.xhr.send(this.data); diff --git a/Views/FormView.js b/Views/FormView.js index 3eddadb..b7bcb91 100644 --- a/Views/FormView.js +++ b/Views/FormView.js @@ -146,11 +146,20 @@ return []; } - const selects = form.getElementsByTagName('select'), - textareas = form.getElementsByTagName('textarea'), - inputs = form.getElementsByTagName('input'), - canvas = form.getElementsByTagName('canvas'), - external = document.querySelectorAll('[form=' + this.id + ']'); + const selects = form.getElementsByTagName('select'), + textareas = form.getElementsByTagName('textarea'), + inputs = [].slice.call(form.getElementsByTagName('input')), + canvas = form.getElementsByTagName('canvas'), + external = document.querySelectorAll('[form=' + this.id + ']'), + inputLength = inputs.length; + + for (let i = 0; i < inputLength; ++i) { + if (inputs[i].type === 'checkbox' && !inputs[i].checked) { + delete inputs[i]; + } + + // todo: handle radio here as well + } return this.getUniqueFormElements( Array.prototype.slice.call(inputs).concat(