Skip to content

Commit 789fa30

Browse files
hranickadg
authored andcommitted
netteForms.js: ability to show all error messages at once via Nette.showFormErrors() [Closes #65]
1 parent 9953926 commit 789fa30

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

src/assets/netteForms.js

Lines changed: 30 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,13 @@ 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+
var success = !Nette.formErrors.length;
238+
Nette.showFormErrors(form, Nette.formErrors);
239+
return success;
232240
};
233241

234242

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

250258

251259
/**
252-
* Display error message.
260+
* Adds error message to the queue.
253261
*/
254262
Nette.addError = function(elem, message) {
255-
if (message) {
256-
alert(message);
263+
Nette.formErrors.push({
264+
element: elem,
265+
message: message
266+
});
267+
};
268+
269+
270+
/**
271+
* Display error messages.
272+
*/
273+
Nette.showFormErrors = function(form, errors) {
274+
if (!errors.length) {
275+
return;
276+
}
277+
var error = errors[0];
278+
if (error.message) {
279+
alert(error.message);
257280
}
258-
if (elem.focus) {
259-
elem.focus();
281+
if (error.element.focus) {
282+
error.element.focus();
260283
}
261284
};
262285

0 commit comments

Comments
 (0)