From eacd9700a878bb7282b887f6cb1a03ca35578a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hrani=C4=8Dka?= Date: Wed, 18 Feb 2015 23:03:08 +0100 Subject: [PATCH 1/2] netteForms.js: Show all error messages at once --- src/assets/netteForms.js | 62 ++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/src/assets/netteForms.js b/src/assets/netteForms.js index 4604394dc..f8853daf2 100644 --- a/src/assets/netteForms.js +++ b/src/assets/netteForms.js @@ -6,6 +6,7 @@ */ var Nette = Nette || {}; +Nette.errors = []; /** * Attaches a handler to an event for the element. @@ -182,11 +183,9 @@ Nette.validateForm = function(sender) { continue; } - if (!Nette.validateControl(elem)) { - return false; - } + Nette.validateControl(elem); } - return true; + return Nette.showErrors(); }; @@ -208,15 +207,60 @@ Nette.isDisabled = function(elem) { /** - * Display error message. + * Adds error message to the queue. */ Nette.addError = function(elem, message) { - if (message) { - alert(message); + Nette.errors.push({ + elem: elem, + message: message + }); +}; + + +/** + * Display error messages. + */ +Nette.showErrors = function() { + var messages = ''; + var focusElem; + + for (var i in Nette.errors) { + var obj = Nette.errors[i]; + var elem = obj.elem; + var message = obj.message; + + if (!focusElem && elem.focus) { + focusElem = elem; + } + + if (message) { + if (messages) { + messages += '\n'; + } + messages += message; + } } - if (elem.focus) { - elem.focus(); + + Nette.errors = []; + if (messages) { + Nette.alert(messages); + + if (focusElem) { + focusElem.focus(); + } + + return false; } + + return true; +}; + + +/** + * Shows an alert. + */ +Nette.alert = function(message) { + alert(message); }; From 631366089f4803aac8ebe2f8e4321b8bcf3e37cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20Hrani=C4=8Dka?= Date: Wed, 27 May 2015 08:22:52 +0200 Subject: [PATCH 2/2] netteForms.js: Display the same error only once --- src/assets/netteForms.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/assets/netteForms.js b/src/assets/netteForms.js index 033227b02..4e516d152 100644 --- a/src/assets/netteForms.js +++ b/src/assets/netteForms.js @@ -239,7 +239,7 @@ Nette.addError = function(elem, message) { * Display error messages. */ Nette.showErrors = function() { - var messages = ''; + var messages = []; var focusElem; for (var i in Nette.errors) { @@ -247,21 +247,18 @@ Nette.showErrors = function() { var elem = obj.elem; var message = obj.message; - if (!focusElem && elem.focus) { - focusElem = elem; - } + if (messages.indexOf(message) === -1) { + messages.push(message); - if (message) { - if (messages) { - messages += '\n'; + if (!focusElem && elem.focus) { + focusElem = elem; } - messages += message; } } Nette.errors = []; - if (messages) { - Nette.alert(messages); + if (messages.length) { + Nette.alert(messages.join('\n')); if (focusElem) { focusElem.focus();