Skip to content

Commit 0664e05

Browse files
hranickadg
authored andcommitted
netteForms.js: ability to show all error messages at once via Nette.showErrors() [Closes #65]
1 parent 5516648 commit 0664e05

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

src/assets/netteForms.js

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@
3030

3131
var Nette = {};
3232

33+
Nette.formErrors = [];
34+
35+
3336
/**
3437
* Attaches a handler to an event for the element.
3538
*/
@@ -196,11 +199,14 @@ Nette.validateForm = function(sender) {
196199
var form = sender.form || sender,
197200
scope = false;
198201

202+
Nette.formErrors = [];
203+
199204
if (form['nette-submittedBy'] && form['nette-submittedBy'].getAttribute('formnovalidate') !== null) {
200205
var scopeArr = Nette.parseJSON(form['nette-submittedBy'].getAttribute('data-nette-validation-scope'));
201206
if (scopeArr.length) {
202207
scope = new RegExp('^(' + scopeArr.join('-|') + '-)');
203208
} else {
209+
Nette.showFormErrors(form, []);
204210
return true;
205211
}
206212
}
@@ -224,11 +230,12 @@ Nette.validateForm = function(sender) {
224230
continue;
225231
}
226232

227-
if (!Nette.validateControl(elem)) {
233+
if (!Nette.validateControl(elem) && !Nette.formErrors.length) {
228234
return false;
229235
}
230236
}
231-
return true;
237+
Nette.showFormErrors(form, Nette.formErrors);
238+
return !Nette.formErrors.length;
232239
};
233240

234241

@@ -249,14 +256,29 @@ Nette.isDisabled = function(elem) {
249256

250257

251258
/**
252-
* Display error message.
259+
* Adds error message to the queue.
253260
*/
254261
Nette.addError = function(elem, message) {
255-
if (message) {
256-
alert(message);
262+
Nette.formErrors.push({
263+
element: elem,
264+
message: message
265+
});
266+
};
267+
268+
269+
/**
270+
* Display error messages.
271+
*/
272+
Nette.showFormErrors = function(form, errors) {
273+
if (!errors.length) {
274+
return;
275+
}
276+
var error = errors[0];
277+
if (error.message) {
278+
alert(error.message);
257279
}
258-
if (elem.focus) {
259-
elem.focus();
280+
if (error.element.focus) {
281+
error.element.focus();
260282
}
261283
};
262284

0 commit comments

Comments
 (0)