From 01fb086c69672165b643b30811dc575c6aa57a25 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 9 Nov 2016 21:13:37 +0100 Subject: [PATCH] Implement canvas form submit --- UI/ActionManager.js | 3 ++- Views/FormView.js | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/UI/ActionManager.js b/UI/ActionManager.js index ead3610..341392e 100644 --- a/UI/ActionManager.js +++ b/UI/ActionManager.js @@ -42,7 +42,7 @@ */ jsOMS.UI.ActionManager.prototype.bind = function (id) { - let uiElements = typeof e === 'undefined' ? document.querySelectorAll('input, select, textarea, button') : [e], + let uiElements = typeof e === 'undefined' ? document.querySelectorAll('input, select, textarea, button, data') : [e], length = uiElements.length; for (let i = 0; i < length; i++) { @@ -74,6 +74,7 @@ actionLength = listeners[i].action.length; for (let j = 1; j < actionLength; j++) { + // todo: handle onload action right after registering everything. this will be used for onload api calls in order to get content such as lists or models. Maybe in the main application after registering a invoke('onload') should be called if the application wants to execute the onload elements // todo: right now one event type can only exist once... needs fixing!!! this.app.eventManager.addGroup(e.id + listeners[i].action[j - 1].type, listeners[i].action[j - 1].type); this.app.eventManager.setDone(e.id + listeners[i].action[j - 1].type, function () diff --git a/Views/FormView.js b/Views/FormView.js index 77ea653..0756410 100644 --- a/Views/FormView.js +++ b/Views/FormView.js @@ -154,10 +154,17 @@ { let data = {}, elements = this.getFormElements(), - length = elements.length; + length = elements.length, + value = null; for (let i = 0; i < length; i++) { - data[jsOMS.Views.FormView.getElementId(elements[i])] = elements[i].value; + if(elements[i].tagName.toLowerCase() === 'canvas') { + value = elements[i].toDataUrl(); + } else { + value = elements[i].value; + } + + data[jsOMS.Views.FormView.getElementId(elements[i])] = value; } return data;